当用户在输入框中键入特定文本时,我试图显示警告消息。问题是我只想返回false一次,这样即使他们不改变文本,用户也可以在第二次点击时提交表单。我已经尝试添加一个计数器,但jquery没有记住第二次点击点击的计数。最好的方法是什么?
if (email.val().indexOf("gmail") > -1))
{
$('input[name=email]').css('border-color','red');
$("#submit").after('<p>Error - Do you want to use a gmail account?</p>');
return false;
}
答案 0 :(得分:1)
我会使用一个标志来确定他们是否已经尝试提交,如果他们没有,那么你给他们警告并返回false:
var triedSubmit = false;
$(/* Your jQuery Object */).click(function() {
if (email.val().indexOf("gmail") > -1))
{
if (!triedSubmit){
$('input[name=email]').css('border-color','red');
$("#submit").after('<p>Error - Do you want to use a gmail account?</p>');
triedSubmit = true;
return false;
}
}
}
答案 1 :(得分:1)
只需设置某种标志
var flags = {}; // in some higher scope
// then later, in your verification function
if (email.val().indexOf("gmail") > -1 && !flags.warnedGmail) {
$('input[name=email]').css('border-color','red');
$("#submit").after('<p>Error - Do you want to use a gmail account?</p>');
flags.warnedGmail = true;
return false;
}
答案 2 :(得分:0)
为什么不在文本框中放置课程并在第一次失败时将其删除?因此,当您第二次使用jQuery查找它时,您将无法找到它并且无法应用该规则。我是这样实施的:
var submit = function()
{
var email = $('.emailFirstTry')
if (email.length > 0 && email.val().indexOf("gmail") > -1)
{
$('input[name=email]').css('border-color','red');
$("#submit").text('Error - Do you want to use a gmail account');
$('.emailFirstTry').removeClass('emailFirstTry');
return false;
}
$('input[name=email]').css('border-color','none');
$("#submit").text('Success!');
return true;
};
你可以在这里看到这个小提琴:http://jsfiddle.net/ozrevulsion/39wjbwcr/
希望有所帮助:)