在提交时禁用多个表单按钮,并发送适当的值?

时间:2017-04-28 14:23:59

标签: javascript jquery

我使用以下代码JSFiddle

$("form").submit(function() {
    $(':submit', this).attr('disabled', true);
    $(this).append($('<input/>').attr({
        type: 'hidden',
        name: $(':submit', this).attr('type'),
        value: $(':submit', this).attr('value')
    }));
});

<input type="submit" value="Approve" /> <input type="submit" value="Update" />

这会成功禁用提交时的按钮,但我尝试发送适当的值。单击哪个按钮并不重要,它始终返回第一个按钮的值。我该如何解决这个问题?

我想要发生的是当您点击&#34;批准&#34;它发送&#34;批准&#34;,当您点击&#34;更新&#34;它发送&#34;更新&#34;。

3 个答案:

答案 0 :(得分:3)

尝试绑定submit按钮,而不是form,如下所示:

$(':submit').on('click', function(e) {
    e.preventDefault();
    $(':submit', this).attr('disabled', true);
    $("form").append($('<input/>').attr({
        type: 'hidden',
        name: $(':submit', this).attr('type'),
        value: $(':submit', this).attr('value')
    }));
    alert($(this).attr('value'));
});

检查代码段:

$(':submit').on('click', function(e) {
    e.preventDefault();
    $(':submit', this).attr('disabled', true);
    $("form").append($('<input/>').attr({
        type: 'hidden',
        name: $(':submit', this).attr('type'),
        value: $(':submit', this).attr('value')
    }));
    alert($(this).attr('value'));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form method="POST">
<input type="submit" value="Approve" /> <input type="submit" value="Update" />
</form>

答案 1 :(得分:2)

以下代码适用于所有情况。

JS:

$("input[type=submit]").on("click", function() {
    $(this).attr("data-clicked", true);
});

$("form").submit(function(e) {
    e.preventDefault();
    $(':submit', this).attr('disabled', true);
    $(this).append($('<input/>').attr({
        type: 'hidden',
        name: $('[data-clicked=true]').attr('type'),
        value: $('[data-clicked=true]').attr('value')
    }));
    alert($('[data-clicked=true]').attr('value'));
    $('[data-clicked=true]').removeAttr("data-clicked")
});

答案 2 :(得分:1)

让课程提交按钮。

HTML

    <form method="POST">
    <input class="submit-class" type="submit" value="Approve" /> 
    <input class="submit-class" type="submit" value="Update" />
    </form>

JS

$('.submit-class').on('click',function(){
    click_val = $(this).val();
});

$("form").submit(function(e) {
    e.preventDefault();
    $(':submit', this).attr('disabled', true);
    $(this).append($('<input/>').attr({
        type: 'hidden',
        name: $(':submit', this).attr('type'),
        value: $(':submit', this).attr('value')
    }));

    alert(click_val);
});