ユーザーがボタンをクリックしたときなど、入力フィールドがすべて無効になるようにアプリケーションを更新する必要があります。ここに私はこれまでにjavascriptのために持っているものです。次の作品とすべて、それで心配はありません。Javascriptの無効化とタイミング
function disableAllInputs() {
var inputs = getAllInputs();
for (i = 0; i < inputs.length; i++) {
inputs[i].disabled = true;
}
}
function enableAllInputs() {
var inputs = getAllInputs();
for (i = 0; i < inputs.length; i++) {
inputs[i].disabled = false;
}
}
function getAllInputs() {
var inputs = document.getElementsByTagName('input');
var selects = document.getElementsByTagName('select');
var allInputs = new Array();
var counter = 0;
for (i = 0; i < inputs.length ; i++) {
allInputs[counter] = inputs[i];
counter++;
}
for (i = 0; i < selects.length; i++) {
allInputs[counter] = selects[i];
counter++;
}
return allInputs;
}
は今、私のHTMLに、私は基本的にこれを持っている:
<form name="MyForm" method="post" action="MyAction.do" onsubmit="onSubmit();">
//form code
<input type="submit" value="Save" name="submit" onclick="onSaveClick()" >
</form>
すべてが正常に動作するように見えます。しかし、私はそれをすべてテスト可能にする必要があります。私はすべてが凍結し、テスターがすべてが無効になっていることを確認することができるように遅延を入れたいと思います。しかし、この一時停止は、一時的なもので、可能な副作用なしにすぐに取り外し可能でなければなりません(つまり、 )関数を呼び出し、呼び出しを削除するだけです)。ここで
は、いくつかの問題があります:
1 - 私はonSaveClick方法でdisableAllInputsメソッドを呼び出す場合、フォームは、(ボタンが無効になっていたので、私は仮定)を提出しません。
2 - 私がonSubmitメソッドでdisableAllInputsメソッドを呼び出すと、一時停止が機能しないように見えます。
ボタンを無効にした後、フォームの提出をシームレスに一時停止する方法について考えてもらえますか?私はsetTimeoutなどを認識しています。私はちょうど使用する適切なコールの場所などを見つけることができません。フォームを一時停止して最終的にフォームを送信するようなものはありません。
また、JSを別の.jsファイルに入れておきたいので、ファイルをインクルードして、適切な場所にdisableAllInputsメソッドを追加すればいいと思います(つまり、 onSubmitメソッドのタイムアウトなど)。
間にアラートを追加すると、すべてのことを確認できます。 –
OnSubmitとonSaveClickを呼び出す点は何ですか? –
レガシーコード。ボタンが2つ以上あるなど。 –