Jqueryのバインドは素晴らしいですが、バインディングがどのような順序で行われるかわかりません。私の現在の問題はこうです:同じイベントのイベント発射順序をどのように変更しますか?
$(document.body).delegate('form', methods.checkForm);
$('form').bind('submit', methods.submitFormIfCheckedFormIsTrue);
methods.checkForm = function (e) {
if (!$(this).isVerified()) {
return false;
}
return true;
};
methods.submitFormIfCheckedFormIsTrue = function (e) {
e.preventDefault();
$.ajax("/submitForm", {
data:$(this).serialize(),
type:"post"
});
};
これは明らかに私が使っている実際のコードではありませんが、かなり近いです。何が起こるかは、submitFormIfCheckedFormIsTrue関数がcheckForm関数の前またはその間に起動するため、チェックがかなり役に立たないということです。私のハックは、フォームに「checked」というクラスを追加し、フォームにそのクラスが他の関数に含まれているかどうかをチェックすることでしたが、submitをクリックしてチェックしてから、もう一度クリックして送信しなければなりませんすべてが正しければ...遅れている。
この問題に関して重要なもう1つのことは、変更できない理由のために、私がアプリケーションの全く異なる部分にあることです。また、それらは非同期にロードされています。
私は、知りたい主なもの...は、順序を変更したり、何らかの形でのイベントの優先順位を設定する方法です...
最初に実行する関数を最初の呼び出しから呼び出しますか? –
なぜajax関数を呼び出して同じ関数内をチェックするだけではないのですか? – loganfsmyth
モジュール化する必要があります。チェック機能はすべてのフォームで一般的ですが、2番目の機能は特定の1つのフォームにのみ固有です。私はちょうど状況につながるものの例としてそのコードを投稿しました... – adiktofsugar