0

我正在尝试禁用单击后提交表单的链接。这是停止来自同一用户的重复请求所必需的。这是我的代码,但不幸的是它不起作用。

<a id="submit-form-link" onclick="document.forms[0].submit()" class="next">Next <span>Step</span></a>

<script type="text/javascript">
    $('#submit-form-link').click(function(){
        $('submit-form-link', this).attr('style', 'pointer-events: none;');
    });
</script>

我觉得我很接近,但它只是不工作。

4

5 回答 5

3

你这是错的。摆脱内联 onclick 事件处理程序并在文档就绪调用中使用它:

$('#submit-form-link').one('click', function(){
    $('form').submit();
});

这会将单击事件绑定到您的链接,但在第一次单击后取消绑定。

您可以在这个jsFiddle 示例的控制台中看到这一点。第一次单击链接时,它会尝试提交表单,但不会尝试后续单击。

于 2013-10-26T19:46:50.203 回答
1

试试这个:

...
$('submit-form-link').off().click(function() { return false; });
...
于 2013-10-26T19:47:20.847 回答
1
<a id="submit-form-link" onclick="document.forms[0].submit()" class="next">Next <span>Step</span></a>

<script type="text/javascript">
    $('#submit-form-link').click(function(){
        if (!$(this).hasClass('disabled')) {
            $('submit-form-link', this).attr('class', 'next disabled');
            return true;
        }
        return false;
    });
</script>

在这里,您可以创建一个类disabled并根据需要设置其样式。只需在单击按钮后添加此类,您就会知道它已被禁用。然后,如果按钮已被单击,则返回 false 以停止事件。

于 2013-10-26T19:50:20.020 回答
0

在第一次点击事件回调函数中再次绑定点击事件

$('#submit-form-link').click(function(){
    $('submit-form-link', this).attr('style', 'pointer-events: none;');

     $(this).click(function(e){e.preventDefault})
});
于 2013-10-26T19:46:41.053 回答
0

您必须删除该onclick属性。

$('#submit-form-link').click(function(){
    $(this).removeAttr('onclick');
});

还有,$('submit-form-link', this)是完全错误的。submit-form-link您正在选择类型为 的子级的节点this。首先,您需要#submit-form-link第二个this已经是对您刚刚单击的链接节点的引用。

于 2013-10-26T19:46:48.797 回答