循环遍历所有字段,如果任何一个字段的验证失败jquery,则返回false
loop through all fields and return false if validation of any one field fails jquery
我在重置标志变量时遇到了大麻烦。我不确定我在哪里失踪了:(
我有一个有很多文本字段的表单。我试图循环浏览所有字段,并在每个字段的模糊上进行一些验证。如果任何字段的验证失败,它就不应该提交表格。但现在我在做这件事时遇到了很大的麻烦。如果我有3个字段,我输入的第一个值是错误的,接下来的两个字段如果我给出的是正确的,那就是提交了不应该提交的表格。有人能帮我吗?
var globalValid = false;
var validators = {
spacevalidation: function(val) {
if($.trim(val) != "")
return true;
else
return false;
},
//Other validation fns
};
$('#form1 .required').blur(function(){
var input = $(this);
var tmpValid = true;
input.each(function(){
var classReturn = true;
validatorFlag = true;
input.next('ul.innererrormessages').remove();
input.removeClass('required_IE');
if(firstTime)
{
input.addClass('valid');
}
if (!input.val()) {
input.removeClass('valid');
input.addClass('required');
var $msg = $(this).attr('title');
input.after('<ul class="innererrormessages"><li>'+$msg+'</li></ul>');
globalValid = false;
}
else{
if(this.className) {
var classes = this.className.split(/'s+/);
for(var p in classes) {
if(classes[p] in validators) {
tmpValid = (tmpValid && validators[classes[p]] (input.val())) ? tmpValid : false;
}
}
}
if(tmpValid == false){
input.removeClass('valid');
input.addClass('required');
var $msg = input.attr('title');
input.after('<ul class="innererrormessages"><li>'+$msg+'</li></ul>');
}
}
});
globalValid=tmpValid;});
$('#form1').submit(function() {
var returnValue = true;
if(globalValid )
{
returnValue = true;
}
else{
returnValue = false;
}
alert("returnValue "+returnValue);
return returnValue;
});
使用此代码,若我为第一个字段输入了错误的值,并为其他两个字段输入正确的值,理想情况下它应该返回false。但它又回来了。我认为我没有正确地重置标志
检查这个例子,它提供了需要发生的事情的基本前提。每次触发模糊事件时,必须验证所有三个字段,并将验证结果存储到全局变量中。
HTML
<form>
<input />
<input />
<input />
<button type="submit">Submit</form>
</form>
Javascript
var globalValid = false; //Global validation flag
$("input").blur(function(){
//local validation flag
var tmpValid = true;
//When one input blurs validate all of them
$("input").each(function(){
//notice this conditional will shortcircuit if tmpValid is false
//this retains the state of the last validation check
//really simple validation here, required value less than 10
tmpValid = (tmpValid && this.value && this.value < 10) ? tmpValid:false;
});
//assign the result of validating all inputs to a global
globalValid = tmpValid;
});
$("form").submit(function(e){
//This is just here to make the fiddle work better
e.preventDefault();
//check the global validation flag when submitting
if(globalValid){
alert("submitted");
}else{
alert("submit prevented");
}
});
JS Fiddle:http://jsfiddle.net/uC3mW/1/
希望您能将本例中的原则应用到您的代码中。主要区别在于您提供的代码没有验证模糊上的每个输入。
相关文章:
- 将输入字段中的文本提交到我的数据库,同时将其添加到我的列表中
- 而循环只设置php中输入字段中的第一个值
- 在输入字段中将最小金额设置为
- 从Rally获取一个特定的标记,以便计算另一个字段中的值
- 循环遍历所有字段,如果任何一个字段的验证失败jquery,则返回false
- 避免在字段验证失败时调用 AJAX onsuccess
- 验证失败时突出显示的输入字段
- 通过JQuery设置输入字段值会使AngularJS上所需的验证失败
- 当用户编辑字段时,Javascript 编辑表单字段失败
- JqGrid复选框字段实现失败
- 用户使用javascript生成的输入字段,如果验证失败,我如何将他们的数据填充回输入字段
- 访问Javascript中对象的字段失败
- 通过javascript重置HTML输入字段失败
- 致命错误:CALL_AND_RETRY_2分配失败-进程在预处理我的js字段时内存不足
- meteor 39;s mongodb插入失败时存储GeoJSON对象字段"loc"
- 当表单失败时保留输入字段值
- Sencha Touch Model字段转换功能失败
- 将FormData字段的value附加为布尔值false会导致函数失败
- 该字段必须是一个日期- DatePicker验证在mvc中失败
- jQuery验证-仅针对验证失败的字段的回调方法