「ソフト」検証の一種としてjQuery UIダイアログを使用しようとしています - フォームが疑わしいと思われる場合は警告しますが、とにかく投稿を続行するには:jQuery UIダイアログコールバックでフォーム送信イベントを再トリガーする方法
// multiple submit buttons...
var whichButton;
$("#myForm").find("[type=submit]").click(function()
{
whichButton = this;
}
var userOkWithIt = false;
$("#myForm").submit(function()
{
if (dataLooksFishy() && !userOkWithIt)
{
$("Are you sure you want to do this?").dialog(
{
buttons:
{
"Yes": function()
{
$(this).dialog("close");
// override check and resubmit form
userOkWithIt = true;
// save submit action on form
$("#myForm").append("<input type='hidden' name='" +
$(whichSubmit).attr("name") + "' value='" +
$(whichSubmit).val() + "'>");
$("#myForm").submit(); /****** Problem *********/
},
"No": function() { $(this).dialog("close"); }
}
});
return false; // always prevent form submission here
} // end data looks fishy
return true; // allow form submission
});
私はこれをデバッグアラート文で確認しました。コントロールの流れはまさに私が期待しているものです。最初にdataLooksFishy()に失敗した場合、ダイアログが表示され、メソッドはfalseを非同期に返します。
は、「はい」をクリックすると、再トリガは、この方法で、この時間を行い、方法は私が欠けていると確信している
... しかし、フォームが実際に提出していない、trueを返しますより良い方法論ですが、主な目標は非同期ダイアログ()を使用して同期confirm()の動作をシミュレートすることです。
おっと...タイプミス:「whichButton」と「whichSubmit」の変数名が一致する必要があります。その部分はうまく機能しています... –