Javascript 如何获取单击jquery的提交按钮

Javascript 如何获取单击jquery的提交按钮,javascript,jquery,Javascript,Jquery,我想根据单击的“提交”按钮定义所需文件的规则: $(function() { $("form[name='formSim']").validate({ rules : {selecedElement : { required : { depends : function() { return $("#action").val()

我想根据单击的“提交”按钮定义所需文件的规则:

$(function() {
    $("form[name='formSim']").validate({
        rules :
            {selecedElement : {
                required : { 
                    depends : function() {
                        return $("#action").val() == "opt1";
                    }
                }
            }
    });
});
我在表单底部有两个按钮:

<div class="align-right">
        <button type="submit" name="action" id="action" value="opt1">Option 1</button>
        <button type="submit" name="action" id="action" value="opt2">Option 2</button>
</div>

选择1
选择2

问题是,获得的值$(“#action”).val()始终是“opt1”,无论我单击哪个按钮,这是因为,当页面上有两个ID相同的元素时,HTML/JS很奇怪。请尝试将
ID=“action”
更改为不同的值,看看效果是否更好。

首先,
id
应该是唯一的标识符。不能有两个id相同的按钮

其次,两个
submit
按钮没有意义,因为提交操作没有连接到按钮-表单是提交的,而不是按钮,因此您甚至有一个独立于按钮按下的按钮

相反,您需要将这两个按钮设置为
type=“button”
,并以不同的方式处理它们的行为。大致如下:

<div class="align-right">
        <button type="button" name="action" value="opt1" onclick="handleClickOpt1()">Option 1</button>
        <button type="button" name="action" value="opt2" onclick="handleClickOpt2()">Option 2</button>
</div>

选择1
选择2
然后,由于您使用的是jQuery,因此您可以从这些处理程序函数中提交表单,无论您查看的是什么行为


但是,您应该问一个不同的问题:为什么您需要两个提交表单但行为不同的按钮?为什么不使用复选框在按钮功能之间切换?

这是因为您在两个按钮上使用相同的
id=“action”
ID
应该是特定元素所特有的。因为您编写了return$(“#action”).val(),它将返回第一个元素的值,ID=“action”。这两个按钮将表单提交到不同的html页面,但某些字段对于一种情况是必需的,对于另一种情况是可选的,您肯定需要两个具有不同处理程序的按钮。实际上,您有两种不同的表单,具有不同的出口和不同的验证器,因此您必须分别处理它们。