2

私は単純なフォームを持っています。テキストフィールドのぼかしイベントで、ユーザーに確認メッセージを表示しています。これは、別の非表示のテキストフィールドに自動的に入力されます。これは今のところうまく機能しています。この問題は、ユーザーがフォーム上の別のフィールドやその他の場所をクリックする代わりに、送信ボタンを直接クリックした場合に発生します。これにより、ぼかしイベントと送信イベントの両方がトリガーされますが、何らかの理由でぼかしがトリガーされ、確認が表示され、ユーザーが確認をクリックすると、送信イベントはトリガーされません。ユーザーは、送信イベントをトリガーするために再度送信をクリックする必要があります。何か案は?

$(function(){
   $("#txt_fld1").blur(function(){
      if(confirm("Auto calculate charge?"))
      {
         $("#txt_chrg").val("8.25");
      }
   });
   $("form").submit(function(){
      alert("SUBMITTING");
   });
})
4

3 に答える 3

0

これは、「送信」には送信ボタンのクリックイベントが必要なためと思われます。しかし、クリックは実際には発生しません。これは、マウスダウンを実行したときに確認ポップアップが表示され、その結果、送信ボタンでぼかしイベントが発生するためです。つまり、マウスアップ イベントが発生しないため、クリックは発生しません。したがって、確認が閉じられると、送信ボタンはすでにフォーカスを失い、送信は行われませんでした。

mousedown-event のハンドラーを使用して、手動でフォームを送信する必要があります

$("input:submit").mousedown(function(e){
    e.preventDefault();
    //$("#txt_fld1").blur();
    $('form').submit();
});
于 2012-06-28T07:18:50.577 に答える
0

jQuery UI のカスタム確認ダイアログの使用を検討してください。

Okコールバックをおよびイベントに渡すことCancelができるため、submit()が常にトリガーされるようにすることができます。

実際、プログラムで送信する前に、他の検証をトリガーできます。

http://jqueryui.com/demos/dialog/#modal-confirmation

于 2012-06-28T07:16:52.433 に答える
0

これは役立つかもしれません:

$("button[type=submit]").click(function(e) {
e.preventDeafault();
#("#txt_fld1").blur();
$("form").submit();
});
于 2012-06-28T07:09:04.150 に答える