【发布时间】:2012-03-23 03:47:07
【问题描述】:
这就是我想做的 -
- 当用户点击主窗体的提交按钮时显示提示(使用 jquery 的即兴)。提示仍然是一个包含密码字段和“确定”和“取消”按钮的表单。
- 当用户点击确定时,主表单(连同密码值,附加到主表单)发布。
- 如果用户单击“取消”,则不会提交表单。
详情
我之前问过一个问题-jquery form submit() not working inside callback function after preventing normal submit while using impromptu
并且能够使用javascript的本机提示方法成功实现我想要的。但我想用 jquery 的即兴插件做同样的事情。
这是使用原生 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 并在我之前的问题jquery form submit() not working inside callback function after preventing normal submit while using impromptu 稍后使用 form.submit()。但在这种情况下,表单只是不提交(不显示 javascript 错误)。请看看你能不能回答这个问题。
【问题讨论】:
-
传递给
$.prompt()的Cancel属性的匿名函数没有任何“事件”变量定义它的范围。使用console.log(event);调试事件变量。
标签: jquery callback preventdefault form-submit impromptu