これが私がやりたいことです-
- ユーザーがメインフォームの送信ボタンをクリックしたときに(jqueryの即興を使用して)プロンプトを表示します。プロンプトも、パスワードフィールドと[OK]および[キャンセル]ボタンがあるフォームです。
- ユーザーが[OK]をクリックすると、メインフォーム(およびメインフォームに追加されたパスワード値)が投稿されます。
- ユーザーが[キャンセル]をクリックした場合、フォームは送信されません。
詳細
以前に質問しました-impromptuの使用中に通常の送信を妨げた後、コールバック関数内でjqueryフォームsubmit()が機能しません
そして、javascriptのネイティブプロンプトメソッドを使用して、私が望むものを正常に実装することができました。しかし、jqueryのimpromptuプラグインを使用して同じことをしたいと思います。
ネイティブJavaScriptプロンプトを使用した作業コードは次のとおりです-
$('#frmAddAdnetworkTemplate').submit(function(event){
promptText = "Password required";
postedPassword = prompt(promptText);
if(postedPassword)
{
$("form#frmAddAdnetworkTemplate").find("input#manage_adnetwork_password").val(postedPassword);
}
else
{
event.preventDefault();
}
});
そして、これが私がこれまでに即興で使用したコードです-
$('#frmAddAdnetworkTemplate').submit(callBackSubmit);
function callBackSubmit(event){
$.prompt(passwordForm,{ buttons: { Ok: true, Cancel: function(){event.preventDefault(); } }, submit: submitPasswordPrompt});
//how do I call event.preventDefault(); when user cancel’s.
//The form gets submitted anayway, it does not wait for the code inside submitPasswordPrompt() to execute. How do I put some callback and make the submit event listener to wait until the user clicks Ok or Cancel?
}
function submitPasswordPrompt(e, value,m,form)
{
if(value)
{
$("form#frmAddAdnetworkTemplate").find("input#manage_adnetwork_password").val(postedPassword);
//append the password value in the main form
}
}
しかし、フォームはとにかく送信され、即席のプロンプトに応答するまで送信を防ぐために何らかのコールバックを配置する方法がわかりません。javascriptの素朴なプロンプトの場合のように待機しません。
また、最初にevent.preventDefaultを使用し、後の質問でform.submit()を使用しようとしたことに注意してください。impromptuの使用中に通常の送信を妨げた後、jqueryフォームsubmit()がコールバック関数内で機能しません。ただし、その場合、フォームは送信されません(javascriptエラーは表示されません)。あなたがそれに答えることができるかどうか見てください。