我在表单末尾添加了一个提交按钮。
我已经给提交按钮添加了以下条件:
onClick="this.disabled=true;
this.value='Sending…';
this.form.submit();"
但是当它移动到下一页时,参数没有传递,传递的是空值。
我在表单末尾添加了一个提交按钮。
我已经给提交按钮添加了以下条件:
onClick="this.disabled=true;
this.value='Sending…';
this.form.submit();"
但是当它移动到下一页时,参数没有传递,传递的是空值。
您应该先提交您的表格,然后再更改提交按钮的值:
onClick="this.form.submit(); this.disabled=true; this.value='Sending…'; "
可能您正在提交表单两次。
删除 this.form.submit()
或在末尾添加 return false
。
最终应该得到 onClick="this.disabled=true; this.value='发送中...';"
button type=submit
标签中的this.value
替换为this.innerText
。 - Edgar Ortega在IE11、FF53和GC58上进行了测试:
onclick="var e=this;setTimeout(function(){e.disabled=true;},0);return true;"
<form>
的 onsubmit
事件中禁用该按钮:<form action='/' method='POST' onsubmit='disableButton()'>
<input name='txt' type='text' required />
<button id='btn' type='submit'>Post</button>
</form>
<script>
function disableButton() {
var btn = document.getElementById('btn');
btn.disabled = true;
btn.innerText = 'Posting...'
}
</script>
注意:如果您有一个带有required
属性的表单元素,那么这种方式将起作用。禁用的 HTML 表单元素在提交表单时不会随 post/get 值一起发送。因此,如果您点击提交按钮后禁用该按钮,并且该提交按钮设置了 name
属性,则该元素将不会随 post/get 值一起发送,因为该元素现在被禁用了。这是正常的行为。
克服此问题的一种方法是使用隐藏的表单元素。
技巧在于延迟按钮禁用,然后提交表单,你可以使用
window.setTimeout('this.disabled=true',0);
即使是0毫秒也可以正常工作。
$("#submitbutton").click(
function() {
alert("Sending...");
window.location.replace("path to url");
}
);
function xxxx() {
// submit or validate here , disable after that using below
document.getElementById('buttonId').disabled = 'disabled';
document.getElementById('buttonId').disabled = '';
}
(function(document, $) {
$(function() {
$(document).on('click', '[disable-on-click], .disable-on-click', function() {
var disableText = this.getAttribute("data-disable-text") || 'Processing...';
if(this.form) {
this.form.submit();
}
this.disabled = true;
if(this.tagName === 'BUTTON') {
this.innerHTML = disableText;
} else if(this.tagName === 'INPUT') {
this.value = disableText;
}
});
});
})(document, jQuery);
然后可以在HTML中这样使用:
<button disable-on-click data-disable-text="Saving...">Click Me</button>
<button class="disable-on-click">Click Me</button>
<input type="submit" disable-on-click value="Click Me" />