1

サインアップフォームがあります。クライアント側で検証を実装したいと思います。ボタンを使用してフォームを送信しています。

<button onclick="check_fields();"></button>

 function check_fields() {          
       if(document.contact_form.name.value=='')                                                     
           document.contact_form.name.focus();
       else 
           document.getElementById("contact_form").submit();    
   }

フォーカスは発生していません。代わりに、フォームが正常に送信されています。助けてください。

4

5 に答える 5

3

最善の方法は、id

次のように定義されたテキストフィールドがあるとします。

<input type="text" name="contact" id="contact" />

JavaScript では、次のようにするとよいでしょう。

document.getElementById("contact").focus();
于 2012-12-30T15:57:01.340 に答える
1

document.contact_form.nameおそらくあなたのテキストフィールドではないからです。入力フィールドの name 属性は何ですか?

その名前が myfield の場合、次を使用する必要があります。

if(document.contact_form.myfield.value === '') {
   document.contact_form.myfield.focus();
} else { ... }
于 2012-12-30T15:53:27.530 に答える
0

html部分を正しく設定すればうまくいくはずです。そうでない場合は、開発者コンソール (chrome または firefox) に javascript の例外が表示されます。

フォームに 2 つの方法でアクセスしていることに注意してdocument.contact_formくださいdocument.getElementById("contact_form")。すなわち。フォーム要素に name と id の両方が設定されていますか?

于 2012-12-30T16:12:15.293 に答える
0

こんにちは、検証エラーのフォーム要素にフォーカスを移動しようとしているようです。「フォーム」要素の一部である入力要素に制御を移すことをお勧めします。

さらに、ボタンのクリックではなく、フォームの「onsubmit」イベントで入力を検証することもできます。例えば:

<form name="myForm" onsubmit="return validate();"> </form>

//validate function on validation failure returns false else true.
// if validate returns false the browser wouldn't submit the form.

次のコード スニペットを使用して、選択した要素に焦点を当てることができます

document.getElementById("elementId").focus();
于 2012-12-30T16:12:49.850 に答える