2016-06-29 4 views
0

私は以下のクエリを使用してエラーが発生していますが、コードの抜粋です:クエリOnSubmitの問題

$('form[action="/home/service/"]').on("click", (function(event) { 
    if ($("#id1").val() == "" && $("#id2").val() == "") { 
     alert("Invalid entry"); 

     event.preventDefault(); 

    } else { 
     $('form[action="home/service/"]').submit(); 
    } 
    }); 

event.preventDefault();それは提出する必要がありますように動作します。私は.off( "click"、function)を使ってみました。しかしこれはうまくいかず、同じ問題でした。

preventDefault()メソッドが実行されたら、問題が解決したらフォームを再送信できません。私は少数の人々がこれに遭遇するのを見ましたが、彼らの修正は私の問題を解決しませんでした。

UPDATE これは私が今持っているもの、しかし、私はまだ問題を受けていますが、問題はそれはしかし、すぐに私はそれを提出することが表示されます値を使用して再送信しようと提出の初期に動作することですボタンがロックされている、誰かがこれまでに遭遇したことはありますか?以下は私の更新されたコードです:

//function on 
function checkForm(event) 
{ 
debugger; 
if ($("ID1, ID2").val() != ""){ 

return; 
} 

else{ 
event.preventDefault(); 
$("#alerts-row").html("<div class='alert_box red'><p>Please Ensure that you have filled in at least one item number below!</p></div>"); 

$('form[action="Form"]').unbind("submit", checkForm); 
} 
} 

$('form[action="form"]').on("submit", checkForm); 

おかげで、

Gavey

+0

は、あなたは、フォーム上のクリックハンドラをよろしいですか?または、送信ボタンでそれをしたいですか?あなたは実際に '.on(" submit "...)をしたいかもしれません。 – 4castle

+0

これは私が推測するように動作します:' else {this.submit(); } '。 'this'ではなく' $(this) 'です。しかし確かに、クリックイベントをフォームにバインドしないでください。代わりにそれにサブミットイベントをバインドするか、 ':submit' children要素にイベントをクリックします。フォームの入力要素で 'return'を押してフォームを提出できますが、最初のフォームのsubmit要素([w3c spec](https://www.w3.org/TR/html5/))で合成クリックイベントが発生しますforms.html#implicit-submission))。 –

+0

申し訳ありませんが、私が使ってきたのは、問題を解決できるかどうかを確認するために、さまざまな方法で試していたon( "submit"関数)ですが、残念ながら2つの新しい今日それをやり遂げる方法、そして成功したかどうかを見てください。ありがとう – Gavey23

答えて

0

前にそれを入れてみてくださいif文

$('form[action="/home/service/"]').on("click", (function(event) { 
     event.preventDefault(); 
     if ($("#id1").val() == "" && $("#id2").val() == "") { 
      alert("Invalid entry"); 

     } else { 
      $('form[action="home/service/"]').submit(); 
     } 
     }); 
+0

私はこれを試しましたが、それでも問題は発生していませんでした。 イベントは一度実行され、実行後すぐに実行されます。あなたが言ったように私は.on( "submit"、function)に変更しました。 – Gavey23

0

私は、適切な方法を提出用いることであろうと思いますイベント。それを行うと、検証が失敗したときに、(あなたが行ったように)Defaultを防ぐことができ、成功すればデフォルトを防ぐことはできません。

単純にform.submit()を呼び出す要素でclickイベントが発生するのを止めることは何もありませんが、代わりにボタン>を使用することをお勧めします。

0

いくつかのサンプルの助けを借りて私たちが邪魔にならない検証を使用していた問題を解決するために、またはステートメントを作成でき、正しい検証をフォームに投稿することができました。

$(document).ready(function(){ 
    // Register new validation adapter 
    $.validator.unobtrusive.adapters.addBool('minimumselect'); 

    // Add validator to controls 
    $input = $("#Input1"); 
    $input.attr('data-val', 'true'); 
    $input.attr('data-val-minimumselect', 'Please provide either this or Number 2'); 

    $input2 = $("Input2"); 
    $input2.attr('data-val', 'true'); 
    $input2.attr('data-val-minimumselect', 'please provide this or Ref Number 1'); 

    // Refresh form - needed to pick up new validator 
    refreshFormValidators(); 
}); 

おかげで、

リチャード