我有一个jQuery来验证我的下拉菜单。如果单选框上的“是”,则可以从下拉菜单中选择。如果单选框下拉菜单中的“否”显示为灰色。
如果两个单选框均为“是”,并且两个下拉列表中的值为“请选择”,然后单击“提交”按钮,则会发生验证错误,并且不会重定向到index.html。
如果一个单选框位于“是”&下拉菜单“请选择”,而另一个处于“否”,并且下拉菜单和“提交”按钮的值为“红色”,则单击验证错误,然后重定向到index.html。显然,这违背了验证的目的。
我希望有人能帮助我发疯。
我将其范围缩小为探针:
});
$("input:submit").click(function(){
var retVal = false;
$.each([1, 2], function(i, val){
retVal = (validate(val) || retVal);
});
return retVal;
});
最佳答案
如果我理解正确,则可以使用一个validate()
函数(未显示),该函数可以验证指定的项目,如果确定,则返回true
,如果无效,则返回false
。提交时,您要呼叫validate()
几个项目,如果其中任何一个返回false
,则将false
返回到提交中(相反,仅当所有验证均为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;
关于javascript - 如何使一个jQuery独立,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9185612/