我遇到了一个问题,当我点击提交按钮时,它需要一些时间来发送请求。如果在此期间我再次点击提交按钮,它会再次发送所有参数,并且参数会重复保存多次。
我不知道如何限制提交按钮,以便表单不会被提交两次。 我认为当我点击提交时,我必须禁用提交按钮,这样用户就不能再次点击它,这是正确的方法吗?
我遇到了一个问题,当我点击提交按钮时,它需要一些时间来发送请求。如果在此期间我再次点击提交按钮,它会再次发送所有参数,并且参数会重复保存多次。
我不知道如何限制提交按钮,以便表单不会被提交两次。 我认为当我点击提交时,我必须禁用提交按钮,这样用户就不能再次点击它,这是正确的方法吗?
禁用按钮是一种解决方案,但可能会给只使用键盘提交表单的用户带来问题。在这种情况下,按钮将不会被禁用。最可靠的方法是处理onsubmit
事件,方法如下:
(function () {
var allowSubmit = true;
frm.onsubmit = function () {
if (allowSubmit)
allowSubmit = false;
else
return false;
}
})();
(嗯,只要启用JS就可以肯定地实现)。您还可以禁用按钮作为视觉确认,向最终用户表明该表单只能提交一次。
<input type="submit" onclick="this.disabled = true" value="Save"/>
<input type="submit" onclick="this.form.submit();this.disabled = true;" value="Save"/>
document.observe('dom:loaded', pageLoad);
function pageLoad() {
var btn;
btn = $('idOfButton'); // Or using other ways to get the button reference
btn.observe('click', disableOnClick);
}
function disableOnClick() {
this.disabled = true;
}
或者您可以使用匿名函数(我不是它们的粉丝):
document.observe('dom:loaded', function() {
var btn;
btn = $('idOfButton'); // Or using other ways to get the button reference
btn.observe('click', function() {
this.disabled = true;
});
});
使用jQuery完成它看起来非常相似。
document.querySelector('.btn').addEventListener('submit',function(){
if(input.value){
this.setAttribute("disabled", "true")
}
};
onclick="disableMe();" in type="submit"
它的提交按钮代码
<input name="bt2" type="submit" onclick="disableMe();" id="bt2" style="width:50px;height:30px; margin-left:30px;" value="Select" />
我知道这是老旧的,但与其禁用,不如只隐藏按钮,你看不见的东西就无法点击。
<input type="submit" onclick="this.style.visibility = 'hidden'" value="Save"/>
您可以使用 .once() 方法调用该函数一次:
<form method="post" id="my-form">
<input type="text" name="input1">
<input type="text" name="input2">
<input type="text" name="input3">
...
<div class="button" id="submit-button" onclick.once="submitOnce()">
Submit
</div>
</form>
<input>
作为提交按钮,而是使用一个被样式化为按钮的 <div>
(或 <span>
),并具有一个 onclick
属性:<form method="post" id="my-form">
<input type="text" name="input1">
<input type="text" name="input2">
<input type="text" name="input3">
...
<div class="button" id="submit-button" onclick="submitOnce()">
Submit
</div>
</form>
而 submitOnce
函数将首先删除 onclick
属性,然后提交表单:
function submitOnce() {
document.getElementById('submit-button').removeAttribute('onclick');
document.getElementById('my-form').submit();
}
您可以将下一个脚本添加到您的“布局页面”(以便在全局所有页面上呈现)。
<script type="text/javascript">
$(document).ready(function () {
$(':submit').removeAttr('disabled'); //re-enable on document ready
});
$('form').submit(function () {
$(':submit').attr('disabled', 'disabled'); //disable on any form submit
});
</script>
$('form').bind('invalid-form.validate', function () {
$(':submit').removeAttr('disabled'); //re-enable on form invalidation
});
如果表单验证失败,则提交按钮将重新启用。