我写了一些代码,我需要在您单击任一输入框后删除验证错误。但是,当我使用标准的 removeClass 时,它们不会产生预期的效果,因为它阻止我再次提交。
你可以明白我的意思:http://jsfiddle.net/5V7Uv/5/
HTML:
<form method="post" name="form1" action="/whatmask_output/">
<div id="sectioncol">
<label for="input-whatmask">whatmask</label>
<input type="text" name="input-whatmask" id="input-whatmask"
size="22" />
</div>
<div id="sectioncol">
<label for="input-whois">whois</label>
<input type="text" name="input-whois" id="input-whois" size="22"
/>
</div>
<input type="submit" value="submit" "whatmask_input" id="btn-search" align="right"
/>
</form>
JavaScript:
var hasError = false;
$("form").submit(function (e) {
var searchReg = /^[a-zA-Z0-9\s\/\.]+$/;
if ($("#input-whatmask").val() != '' && $("#input-whois").val() != '') {
alert('Enter only one field at a time.');
return false;
}
if (hasError) return false;
if ($("#input-whatmask").val() != '') {
if (!searchReg.test($("#input-whatmask").val())) {
$("#input-whatmask").addClass("errorinput").after('<span class="error">Enter a valid value.</span>');
hasError = true;
return false;
}
} else if ($("#input-whois").val() != '') {
if (!searchReg.test($("#input-whois").val())) {
$("#input-whois").addClass("errorinput").after('<span class="error">Enter a valid value.</span>');
hasError = true;
return false;
}
} else {
alert('No values entered!');
return false;
}
});
$("#input-whatmask, #input-whois").click(function () {
$("#input-whatmask, #input-whois").removeClass("errorinput");
$("#input-whatmask, #input-whois").removeClass("error");
$("#input-whatmask, #input-whois").val('');
if ($(this).hasClass('errorinput')) {
$(this).next().remove();
$(this).removeClass("errorinput");
hasError = false;
}
});
最佳答案
if (hasError) return false;
这一行看起来像违规者,因为您的 hasError
变量在第一次运行后设置为 true(当然,如果有错误),并且没有设置回 false。
尝试在这一行之后添加 hasError = false
:
$("form").submit(function (e) {
关于jquery - 删除类/样式 onclick,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10728125/