2016-10-25 3 views
-2

を送信ボタンを無効に私はボタンが最初にして唯一無効にすることにしたい次のコードはどうすれば有効にして、特定の定義された条件に基づいて

<input type=submit value=SUBMIT onclick=report_submit()> 

で関数を呼び出すことによって、提出コードを持っていますすべての入力がnullでない場合に有効になります。

フォームが送信されたら、ボタンを再度無効にして、重複した挿入が行われないようにします。

私はStack Overflowから他の例を試しましたが、永久に有効または無効にされています。

+0

あなたはここを参照してください... /ディスエーブル入力を有効にするかを決定するために、変数の変化を見たい場合があります。http://stackoverflow.com/questions/1759987/listening- javascriptまたはjqueryの変数変更用また、この種のことは、AngularJSのようなフレームワークでの子どもの遊びです。 @AdrianC。 –

+0

jQueryはこの質問では指定されていません。 –

+0

@DanielShillcockああ、そうだよ。 document.getElementById( 'theInput')。disabled = true; –

答えて

1

ユーザーが選択を入力または変更すると、フォームをチェックして、すべての入力が値を持っているかどうかを確認して、ボタンをもう一度無効にします。興味があればArray.prototype.slice()

function enableSubmit() { 
 
    
 
    // counts the elments of inputs with values 
 
    var i = 0; 
 
    Array.prototype.slice.call(document.forms["form"].elements).forEach(function(e) { 
 
    if (e.value) { 
 
     i++; 
 
    } 
 
    }); 
 
    
 
    // if all the elements have a value enabled the submit button 
 
    if (i === (document.forms["form"].elements.length - 1)) { 
 
    document.getElementById('disabled').disabled = false; 
 
    } else { 
 
    document.getElementById('disabled').disabled = true; 
 
    } 
 
}; 
 

 
// add a event listener to each tag require (were using input and select) 
 
Array.prototype.slice.call(document.forms["form"].elements).forEach(function(e) { 
 
    if (e.tagName === 'INPUT') { 
 
    e.addEventListener("keyup", function(e) { 
 
     enableSubmit(); 
 
    }, false); 
 
    } else if (e.tagName === 'SELECT') { 
 
    e.addEventListener("change", function(e) { 
 
     enableSubmit(); 
 
    }, false); 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<form name="form" method="post"> 
 
    <input id="text" name="text" type="text" /> 
 
    <select id="options" name="options"> 
 
    <option value></option> 
 
    <option value="1">Option 1</option> 
 
    </select> 
 
    <input type="submit" id="disabled" disabled="disabled" /> 
 
</form>

+0

イベントリスナーを使用するよりも、介入JavaScriptを使用する方が効果的です。必要のないフィールドがある場合、これは機能しません。 –

+0

イベントリスナーのJavaScriptを追加しました。質問は必須フィールドについて質問したことはありません。すべての入力がnullでない場合は、送信ボタンを無効にして有効にするよう求められました。 – thekodester

1

kodecountは(すなわち、Safariがthisを参照)、この本質的な特徴は、ブラウザ間で100%ではないことを思い出しました。

各入力にrequired属性を使用し、その日に電話をかけないのはなぜですか。 requiredの入力に値がない限り、その送信ボタンを1000回クリックすることができ、requiredのすべての入力が値を持つまで何もすることはできません。 JSなし、CSSなし、HTMLのみ

<form id='f1' onsubmit='nullCheck()'> 
 
    <input name='i1' required> 
 
    <br/> 
 
    <input name='i2' required> 
 
    <br/> 
 
    <input name='i3' required> 
 
    <br/> 
 
    <input name='i4' required> 
 
    <br/> 
 
    <input type='submit'> 
 
</form> 
 
<form id='f2' onsubmit='nullCheck()'> 
 
    <input name='i5' required> 
 
    <br/> 
 
    <input name='i6' required> 
 
    <br/> 
 
    <input type='submit'> 
 
</form>

+0

これはすべてのブラウザで機能するわけではありませんが、[フォーム検証](http://www.formvalidator.net/)はユーザーが取ることのできる別のアプローチです。 – thekodester

関連する問題