2016-12-21 4 views
1

私は現在、JavaScriptの検証を行っていますので、少なくとも1つのチェックボックスを選択しなくてもフォームはうんざりしません。それは、少なくとも1人のユーザを選択するようにメッセージをユーザにスローする。検証が失敗した場合にページを再読み込みしないようにする

私が今やりたいことは、フォームに他のことをするのを止めることです。送信ボタンをクリックした後にページをリロードするように見えます。

次のように私の現在のコードは次のとおりです。

フォーム:

<form name="frm_multi_message_form" id="multi_message_form" style="margin-bottom: 0px;" method="post"><button style="border-style: none; margin: 5px 0 5px 0;" type="submit" action="" onClick="checkForm(this);" >Message multiple sitters</button> 
    </form> 

マイJavascriptを:

function checkForm(form) 
     { 

    if (document.querySelector('form[id="multi_message_form"] input[name="username[]"]:checked')) { 
      document.frm_multi_message_form.action = "http://example.com/another-page/"; 
      document.frm_multi_message_form.submit(); 
     } else { 
      alert("You must select at least one sitter to message"); 

     } 
    return false; 
     } 

私は警告を投げ、問題を持っていない、とフォームが提出し、私はpreventDefaultを消す方法を知っておきたいと思います(もしかするとjavascriptクエリーで許可されていませんか?)もしできればエラーは表示されずに何も起こりません。

+0

preventDefault()がフォームの送信を停止し、検証が完了したら、フォームを再提出する必要があります –

答えて

1

あなたはonClick="return checkForm(this);"を使用する必要がありますし、あなたのフォームが検証エラー

+0

これはありがとう、これは、使用する最も簡単なもので、テストして、現在このページで期待どおりに動作しています。 –

+0

あなたは大歓迎です:) –

0

の場合に提出されることはありませんあなたは、デフォルトの動作(提出)を防ぐために、フォームの送信にイベントハンドラを必要とする:

document.getElementById('multi_message_form').addEventListener('submit', function(evt) { 
    evt.preventDefault(); 
}) 
0

検証後に "return false"を使用する

$("#formId").submit(function() 
{ 
if(someField == "") 
{ 
$("#divId").text 
return false; 
} 
} 
関連する問題