我有以下代码,其中我尝试迭代 html 文本输入元素,进行一些验证并在验证失败时阻止表单提交:
$("#the_form").submit(function(){
$(":text", this).each(function(){
if($(this).val().length != 0)
{
var str = $(this).val();
str = $.trim($(this).val());
$(this).val(str);
if($(this).val().length < 4)
{
alert("You should enter at least 4 characters");
$(this).focus();
return false;
}
}
}) // end of each() function
return true;
})
如果我删除 .each() 函数并单独执行每个元素(这显然不是一个很好的方法),我会得到想要的结果。但是,如果我按原样使用代码,即使用户没有输入至少四个字符,表单也会继续提交。关于我在这里可能做错了什么有什么想法吗?任何帮助将不胜感激。提前致谢。
Your return false;
来自回调函数内$.each()
(这使得它在该迭代中中断)而不是从submit
处理程序(这将停止表单提交)。这应该可以解决问题:
$("#the_form").submit(function(){
var isValid = true;
$(":text", this).each(function(){
if($(this).val().length != 0)
{
var str = $(this).val();
str = $.trim($(this).val());
$(this).val(str);
if($(this).val().length < 4)
{
alert("You should enter at least 4 characters");
$(this).focus();
isValid = false;
return false;
}
}
}) // end of each() function
return isValid;
})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)