使用onclick事件提交表单,但只允许一次

时间:2013-09-25 14:52:43

标签: javascript jquery forms onclick

我正在设置表单的操作并通过div的 onclick 事件提交表单:

<div class="action_button" onclick="document.forms['test'].action='url/to/action';document.forms['test'].submit()">
<span class="action_button_label">Save</span>
</div>

这很好用,但我想使用一些有条件检查action_label_button中'Save'的代码,并且只允许submit()触发一次。我正在尝试阻止多次保存(这会在我的应用中产生重复数据)。

// disable save buttons onclick (prevent multiple clicks of save buttons)

$('.action_button_label').one('click', function() {
    // if the button is a save button
    if($(this).html().indexOf('Save') != -1) {
        // submit the parent form
            $(this).html('<span class="action_button_label" style="color:gray;">Saving...</span>');
            $(this).parents('form').submit();
    }
});

$('form').bind('submit', function() {
    $(this).find('action_button').attr('onclick', '');
});

此代码似乎不像我预期的那样工作。我担心这里有点超出我的深度,任何指针都会很棒。

2 个答案:

答案 0 :(得分:2)

尝试替换

$(this).find('action_button').attr('onclick', '');

$(this).find('.action_button').attr('onclick', '');

答案 1 :(得分:0)

你应该总是处理多个提交服务器端以确保你没有得到它们。但是,您可以隐藏按钮标签以协助此客户端。

$('.action_button_label').one('click', function() {
    // if the button is a save button
    if($(this).html().indexOf('Save') != -1) {
        // submit the parent form
            $('.action_button_label').hide(); //ADD THIS
            $(this).html('<span class="action_button_label" style="color:gray;">Saving...</span>');
            $(this).parents('form').submit();
    }
});

$('form').bind('submit', function() {
    $(this).find('action_button').attr('onclick', '');
});