如何使jquery独立



我有一个jquery来验证我的下拉列表。如果单选框上的"是",我可以从下拉列表中选择。如果单选框下拉列表中的"否"为灰色。

如果两个单选框都是"是",并且两个下拉列表中的值都是"请选择",并且单击了提交按钮,则会发生验证错误,并且不会重定向到index.html。

如果一个无线电盒子处于"是"&下拉列表中的"请选择"和另一个位于"否"且值为"红色"的下拉列表和提交按钮被单击,会出现验证错误occurs并重定向到index.html。显然,这违背了验证的目的。

我希望有人能帮我,因为这会让我发疯。!

我已经把它缩小到这个问题:

});      
       $("input:submit").click(function(){         
           var retVal = false;
           $.each([1, 2], function(i, val){
              retVal = (validate(val) || retVal);
           });
            return retVal;   
       });

如果我理解正确,您有一个validate()函数(您没有显示),它验证指定的项,如果OK则返回true,如果无效则返回false。在提交时,您希望为多个项目调用validate(),如果其中任何返回false,则将false返回提交(相反,仅当所有的验证都是true时,才返回true

按照现有代码设置retVal的方式,一旦它变成true,它将保持true,因为validate()true进行OR运算的任何布尔结果都将是true。试试这个:

       $("input:submit").click(function(){         
           var retVal = true;
           $.each([1, 2], function(i, val){
              retVal = validate(val) && retVal;
           });
            return retVal;   
       });

这从默认返回true开始,然后如果validate(val)返回false,则将其更改为false。使用&&而不是||则意味着一旦retValfalse,它将保持false。在我看来,完全去掉&&并说:会更清楚

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

最新更新