我有一个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。然后,使用&&代替||意味着一旦retValfalse,它将保留为false。我认为完全摆脱&&并说:

if (!validate(val)) retVal = false;

关于javascript - 如何使一个jQuery独立,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9185612/

10-12 00:28
查看更多