使用 jQuery 检查多个提交按钮时出现问题

Issue with checking for multiple submit buttons using jQuery

本文关键字:问题 按钮 提交 jQuery 检查 使用      更新时间:2023-09-26

我正在尝试使用 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);
                    }

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

你的 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是否满足任何条件。您可以看到这将如何很快变得相当冗长。