使用jQuery检查多个提交按钮的问题
我正在尝试检查四个提交按钮中的哪一个被按下,使用jQuery 1.7.2如果点击其中三个中的任何一个,我想显示一个带有按钮值的警告框。 这是html代码:
这是jQuery函数代码:
$(function(){ $(':submit').click(function(){ var value = $(this).val(); //alert(value); if($(this).val() == "Save" || "Find" || "Clear") { //if($(this).val() == "Update") { alert('The value is: ' + value); } }); });
如果我点击三个按钮中的任何一个,我会显示该值,但是如果我然后单击“更新”按钮,它也会显示。 我以为我的if块会阻止这种情况发生?
如果我注释掉该行并使用此代码:
if($(this).val() == "Update") { alert('The value is: ' + value); }
然后,只有当我点击“更新”按钮时,警报才会触发。 当我检查多个提交按钮时,这里的代码有什么问题?
你的if语句不正确:
if( $(this).val() == "Save" || "Find" || "Clear" )
虽然通常假设操作员像这样工作,但这不是它的工作原理。 如果你想测试这个值是否等于这些字符串中的一个,你应该使用$.inArray
代替:
if ( $.inArray( $(this).val(), [ "Save", "Find", "Clear" ] ) > -1 );
额外信用
作为一点额外的功劳, ||
operator计算两个表达式(一个在左边,一个在右边),如果两个表达式中的任何一个都是true
则计算结果为true
。
if ( true || false ) // Evalutes to true, since one of the two was true
在您的尝试中,您想要查看该值是否等于这些字符串中的任何一个。 如果你想使用||
,你必须创建几个比较:
var myVal = $(this).val(); if ( ( myVal == "Save" ) || ( myVal == "Find" ) || ( myVal == "Clear" ) )
如果满足任何条件,则该条件将评估为true
。 你可以看到这将如何迅速变得相当冗长。