0

各フィールドが有効かどうかを判断するために多くの javascript と ajax を使用する Web フォームがあります。問題が発生したときにユーザーが知ることができるように、オンザフライで警告メッセージを表示します。すべてがうまくいくまで、送信ボタンの「無効」機能も使用します。しかし、ここに問題があります。すべてのイベント処理は「onblur」機能を使用して行われます。ただし、最後のフィールドが入力されると、ユーザーがそのフィールドからクリックするまで検証は行われません。しかし、なぜ彼らは?ページで行うことは何も残っていませんが、[送信] をクリックするだけです。これは、最初に別の場所をクリックするまで実行できません (検証イベントを開始するため)。私はこれを回避する方法を見つけようとしています。余分なクリックをしなくても済むようにする方法が必要です。それは単に専門的ではないようです。これを回避する標準的な方法はありますか?ユーザーが個々の文字を入力するたびに検証イベントをトリガーできますか?

前もって感謝します

4

3 に答える 3

1

フォーム ノードにはonsubmit、ユーザーがフォームを送信しようとしたときに発生するイベントがあります。これを使用して、すべてのフォーム フィールドを検証し、ユーザーにフォームの送信を許可するかどうかを決定できます。一般的な実装は次のとおりです。

<form onsubmit="return validateForm()">
    ...
</form>

また、JavaScript 関数では、ユーザーがフォームの送信を続行できる場合は true を返す必要があり、フォームが送信される前にユーザーの要求をキャンセルするには false を返す必要があります。

(疑似コード):

function validateForm(){
    if(formIsOkay){
        return true;
    }else{
        return false;
    }
}
于 2012-04-25T03:51:30.037 に答える
0

{onChange、onKeyup、blur など} の制限を考慮して、コピー/貼り付けまたはその他のエッジ ケースの処理に関しては、おそらく 500 ミリ秒ごとにポーリングするタイマーを追加し、送信ボタンを有効/無効にします。

window.setInterval(checkEnableSubmit, 500);

function checkEnableSubmit(){
   if(validateForm()){
       // enable submit button
   } 
}

function validateForm(){
     if(formIsOkay){
         return true;
     }
     return false;
}

ボタンのクリック時に validateForm() を呼び出して、ユーザーがデータを無効にしてタイマーが呼び出される前に送信しないようにします。サーバー側の検証は当然ですが、可能であれば送信の失敗を避けたいと思います。

于 2012-04-25T05:41:32.180 に答える
0

onkeyup を使用して各フィールドを検証し、迷惑にならないように onblur メソッドへのユーザー通知を差し控えることができます。onkeyup ですべてのフィールドが有効な場合は、送信ボタンを有効にします。

于 2012-04-25T03:49:08.107 に答える