我最近发现了一个关于如何禁用多个html表单提交的可能性的教程,因为人们不耐烦地点击了几次提交按钮,因此读取:
为您的按钮指定ID,例如:
<input type="submit" value="Submit" id="myButton" />
然后在表单标记中添加几行:
onsubmit="document.getElementById('myButton').disabled=true;
document.getElementById('myButton').value='Submitting, please wait...';"
看起来很棒(尚未在我的表单上尝试过)但我想知道如何将其转换为链接到“处理程序脚本”的文本链接&#39;将东西输入我的数据库?
编辑:我想我需要更具体一点!我有一个(登录)用户提交的表单,然后将它们带到“预览”状态。它们预览的页面,可以编辑或发布它们的文本,因此文本链接到处理程序脚本。
我在php和sql工作。
由于
答案 0 :(得分:2)
您不应该单独依赖它,而是要防止服务器端的重复条目。 (例如,在数据库列上使用UNIQUE索引,具有允许仅处理一次的表单的标记等)
您只需向链接添加一个onclick处理程序,以防止它再次被跟踪(return false
resp。even.preventDefault()
),但
请求更改/创建数据服务器端不应该使用GET进行,而应仅使用POST - 因此,对于此顶级开头的链接是错误的。 (这种经验法则的原因:其他机制可能触发该链接,不仅是用户点击它 - 浏览器(扩展)预取资源,或搜索引擎跟踪链接[如果整个事情是公共可访问的,不需要登录用户等。)
答案 1 :(得分:0)
我会从这里的其他人那里借一个解决方案...
以下是该问题的链接jQuery disable a link
Peter DeWeese回答的捷径:
将此添加到您的CSS
a.disabled {
opacity: 0.5
pointer-events: none
cursor: default
}
并将其添加到您的JS
$('#yourlinksid').click(function (e) {
$(this).addClass('disabled'))
});
然后,您可以在需要时使用removeClass('disabled')
答案 2 :(得分:0)
如果用户禁用了javascript,则无效。使用CSRF令牌的更好方法。在渲染表单时创建唯一标记,然后在处理表单时,检查标记是否正确并丢弃它。如果用户单击表单两次,则第二次找不到令牌,您可以安全地丢弃该请求。