我有一个jquery来验证我的下拉。如果在收音机盒上'是',我可以从下拉菜单中选择。如果收音机框下拉列表中的“否”显示为灰色。
如果两个单选框都是'是',并且两个下拉列表中的值都是'请选择'并单击提交按钮,则会发生验证错误,并且不会重定向到index.html。
如果一个收音机盒位于'是'并且是下拉“请选择”,另一个在“否”,下拉值为“红色”,单击提交按钮,验证错误发生并重定向到index.html。显然,这违背了验证的目的。
我希望有人能帮忙,因为它让我发疯了。!
我已将其缩小到这个探测范围:
});
$("input:submit").click(function(){
var retVal = false;
$.each([1, 2], function(i, val){
retVal = (validate(val) || retVal);
});
return retVal;
});
答案 0 :(得分:0)
如果我理解正确,你有一个validate()
函数(你没有显示)验证指定的项目,如果正常则返回true
,如果无效则返回false
。在提交时,您希望为多个项目致电validate()
,如果任何,则返回false
将false
返回给提交(相反,返回{{1} }只有所有验证都是true
。
现有代码设置true
的方式,一旦变为retVal
,它将保留 true
,因为来自true
的任何布尔结果与validate()
将为true
。试试这个:
true
默认返回 $("input:submit").click(function(){
var retVal = true;
$.each([1, 2], function(i, val){
retVal = validate(val) && retVal;
});
return retVal;
});
,然后在true
返回false
时将其更改为validate(val)
。使用false
代替&&
则意味着||
retVal
false
后将保持false
。在我看来,完全摆脱&&
并说:
if (!validate(val)) retVal = false;