我正在尝试禁用在单击后提交表单的链接。这需要停止来自同一用户的重复请求。这是我的代码,但不幸的是它没有用。
<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>
我觉得我很接近,但它只是不起作用。
答案 0 :(得分:3)
你错了。摆脱内联onclick事件处理程序并在文档就绪调用中使用它:
$('#submit-form-link').one('click', function(){
$('form').submit();
});
这会将click事件绑定到您的链接,但在第一次单击后将其解除绑定。
您可以在此 jsFiddle example 的控制台中查看此内容。第一次单击链接时,它会尝试提交表单,但不会尝试后续点击。
答案 1 :(得分:1)
试试这个:
...
$('submit-form-link').off().click(function() { return false; });
...
答案 2 :(得分: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以停止该事件。
答案 3 :(得分:0)
在第一次单击事件回调函数
中再次绑定click事件$('#submit-form-link').click(function(){
$('submit-form-link', this).attr('style', 'pointer-events: none;');
$(this).click(function(e){e.preventDefault})
});
答案 4 :(得分:0)
您必须删除onclick
属性。
$('#submit-form-link').click(function(){
$(this).removeAttr('onclick');
});
此外,$('submit-form-link', this)
完全错误。您正在选择submit-form-link
类型的节点,这些节点是this
的子节点。首先,您需要#submit-form-link
,第二个this
已经是您刚刚点击的链接节点的引用。