2

UI に backbone.js と jQuery を使用するアプリケーションがあります。ページにフォームがあり、フォームのテキスト ボックスに添付されたぼかしイベントは、特定の条件下でユーザーにポップアップを表示し、その入力を待機する関数です。条件は、WCF サービスへの ajax 呼び出しを使用してチェックされます。

テキストフィールドにフォーカスが設定されているときにフォームの送信ボタンをクリックするまで、すべてが正常に機能します。その後、ポップアップが表示されますが、その背後にフォームが送信されます。

もちろん、適切な結果は2番目のイベントをキャンセルすることです(ポップアップが表示された場合、フォームは間違いなく送信できません)

どうすればこれを達成できますか?

4

3 に答える 3

0

私はあなたを理解できませんが、おそらくこれはあなたが必要としているものです: event.stopPropagation();

http://api.jquery.com/event.stopPropagation/

または .off()

http://api.jquery.com/off/

于 2012-12-16T09:27:03.783 に答える
0

「送信」をクリックするとポップアップが表示されるということですか?これはポップアップが表示されるべき「特定の条件」の 1 つではありませんか? 送信ボタンがクリックされたかどうかを確認する条件をぼかしハンドラーに追加することを検討します。この場合、ポップアップを表示しないでください。

onSubmit ハンドラでイベントをキャンセルします -

form.addEventListener("submit", function(evt){
evt.cancel()
//dont want to catch it again
form.removeEventListener(this)   
popup.show()
//have the popup call submit when done, it wont be caught again
}
于 2012-12-16T09:32:44.400 に答える
0

のsubmitイベントにバインドし、そのpreventDefault()<form>メソッドを呼び出して、ポップアップが表示されている場合に送信を禁止できます。

$("form").submit(function(e) {
    if ($("selector_matching_your_popup").is(":visible")) {
        e.preventDefault();  // Cancel submission.
    }
});

falseを呼び出す代わりにハンドラーから戻ることもできますが、これにより、先祖要素へpreventDefault()のイベントの伝播も停止します。これは望ましくない場合があります。submit

于 2012-12-16T09:39:17.260 に答える