1

我正在尝试使用 jQuery 1.7.2 检查四个提交按钮中的哪一个被点击 如果单击其中三个按钮中的任何一个,我想显示一个带有按钮值的警报框。这是html代码:

<body>
    <table>
        <tr>
            <td>
                <input type="submit" id="cancel" value="Cancel">
            </td>
        </tr>

        <tr>
            <td>
                <input type="submit" id="find" value="Find">
            </td>
        </tr>

        <tr>
            <td>
                <input type="submit" id="save" value="Save">
            </td>
        </tr>

        <tr>
            <td>
                <input type="submit" id="update" value="Update">
            </td>
        </tr>
    </table>
</body>

这是jQuery函数代码:

<script>
        $(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);
                }
            });
        });
    </script>

如果我单击三个按钮中的任何一个,我会显示值,但如果我然后单击更新按钮,它也会显示。我以为我的 if 块会阻止这种情况发生?

如果我注释掉该行并改用此代码:

if($(this).val() == "Update") {
                        alert('The value is: ' + value);
                    }

然后只有当我点击更新按钮时才会触发警报。当我检查多个提交按钮时,这里的代码有什么问题?

4

1 回答 1

4

您的 if 语句不正确:

if( $(this).val() == "Save" || "Find" || "Clear" )

尽管通常假设操作员是这样工作的,但这并不是它的工作方式。如果您想测试该值是否等于这些字符串之一,您可能应该$.inArray改用:

if ( $.inArray( $(this).val(), [ "Save", "Find", "Clear" ] ) > -1 );

额外学分

作为额外的功劳,||运算符计算两个表达式(一个在它的左边,一个在它的右边)并计算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是否满足任何条件。您可以看到这将很快变得相当冗长。

于 2012-05-27T05:02:23.417 回答