私はAjaxでZendフォームを検証していますが、これを思いつきました:
$('#some-dialog-i-have form').live('submit', function(e) {
e.preventDefault();
MyClass.Form.Validate($(this), function() {
// I wish to submit the form from this callback function
$(this).trigger('submit');
});
});
MyClass.Form.Validate はフォームを受け取り、XHR リクエストを実行してフォームが有効であることを確認します。
私の問題は、有効な場合はフォームの送信を続行したいが、有効でない場合はすべてを停止したいということです。このハンドラー内から送信をトリガーすると、明らかに再帰的な問題が発生します。これについて最善の方法は何ですか?
Form: {
Validate: function(form, onSuccess) {
$.ajax({
type: 'POST',
dataType: 'json',
url: '/ajax/form/validate',
data: form.serialize() + '&f=' + form.data('id')
}).done(function(errorMessages) {
if(errorMessages.count > 0) {
// Snip (display errors)
return false;
}
// Callback
onSuccess();
});
}
}
- 私はstopPropagationについて調べましたが、これはライブハンドラーには影響しません
- live() ハンドラーが非推奨であることは承知しており、今のところ変更を怠っています
- 単純に Ajax を介してフォームを投稿することを考えましたが、この方法で投稿するかどうかはわかりません
おそらく単純な解決策ですが、今日の私の頭は適切な場所にありません。
ありがとう。