使用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 。 你可以看到这将如何迅速变得相当冗长。