我有以下功能:
function checkEmails(newEmail){
$('table td:nth-child(3)').each(function(){
if ($(this).html() == newEmail)
{
alert('The email address "' + newEmail + '" is already in the list. Duplicates are not allowed.');
toggleSpinner();
return false;
}
});
return true;
}
我在表单提交处理程序中这样称呼它:
if (!checkEmails($('input#email', $('#newForm')).val())) {
return false;
}//I submit the form via ajax next....
我只是在检查以确保用户尝试提交的电子邮件地址不在表中。它似乎运行良好,但在Firefox中除外,它实际上并没有阻止ajax请求的发生。出现警告框,告诉我用户已经在列表中,但是单击“确定”后,无论如何都会提交表单。它可以按我想要的那样在IE中工作。
我在这里做错了什么?
最佳答案
应该大概是这样的:
function checkEmails(newEmail){
var ret = true;
$('table td:nth-child(3)').each(function(){
if ($(this).html() == newEmail)
{
alert('The email address "' + newEmail + '" is already in the list. Duplicates are not allowed.');
toggleSpinner();
ret = false;
}
});
return ret;
}
它正在做的是在对元素进行每个操作之前将返回值设置为true,然后,如果发现任何无效的电子邮件地址,则将其设置为false。那就是将从函数返回的值。