1

我正在设置表单的操作并通过 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 中的“保存”,并且只让 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', '');
});

这段代码似乎没有像我预期的那样工作。恐怕我在这里有点超出我的深度,任何指针都会很棒。

4

2 回答 2

2

尝试更换

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

$(this).find('.action_button').attr('onclick', '');
于 2013-09-25T14:54:20.420 回答
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', '');
});
于 2013-09-25T14:55:44.993 回答