我制作了本质上是一个灯箱,如果更改需要用户确认其密码,则会弹出该灯箱,用户在其中输入密码等。
我像这样触发函数:
if(verifyPassword())
{
//apply change
}
验证函数是:
function verifyPassword() {
$('#confirmpasswordoverlay').fadeIn(300);
$('#submit').click(function() {
$.post('', { password: $('input[name=password]').val() },
function(check) {
if(check.error)
{
if(check.password)
{
//show password error
return false;
}
else
{
//show error
return false;
}
}
else
{
return true;
}
}, 'json');
});
}
基本上,我需要该函数等待,直到单击#submit
以返回 true 或 false。
提前致谢
最佳答案
自 jQuery 1.5.0
起,您可以使用延迟对象
应用一些魔法:
$.when( verifyPassword() ).done(function() {
// do something
});
您需要稍微重写一下verifyPassword()
:
function verifyPassword() {
var Notify = $.Deferred();
$('#confirmpasswordoverlay').fadeIn(300);
$('#submit').click(function() {
$.post('', { password: $('input[name=password]').val() },
function(check) {
if(check.error) {
if(check.password) {
//show password error
Notify.resolve();
}
else {
//show error
Notify.reject();
}
}
else {
return true;
}
}, 'json');
});
return Notify.promise();
}
这可能不是实现您目标的最优雅的方式,我只是说您可以以这样的方式做到这一点:-)
关于php - Javascript - 在结束功能之前等待点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4903157/