我知道有很多关于它的问题,但我尝试了几种解决方案,但没有任何效果。
在我的django应用程序中,我有一个表单:
<form method='post'>
<button type='submit'>Send</button>
</form>
我不想在用户提交表单后禁用该按钮。使用其他问题,我尝试了几件事,比如:
<button type='submit' onclick="this.disabled=true">Send</button>
单击时,该按钮被禁用...但表单未提交。每次尝试我都有同样的问题:按钮被禁用或表单已提交。我无法找到如何做到这两点......
我正在使用Chrome。我有这个问题的原因吗?谢谢你的帮助。
答案 0 :(得分:74)
试试这个:
$('form').submit(function() {
$(this).find("button[type='submit']").prop('disabled',true);
});
答案 1 :(得分:13)
我喜欢这个,不必遍历DOM。 将函数放在setTimeout函数上,这允许make submit和after disable按钮,即使setTimeout为0
$(document).ready(function () {
$("#btnSubmit").click(function () {
setTimeout(function () { disableButton(); }, 0);
});
function disableButton() {
$("#btnSubmit").prop('disabled', true);
}
});
答案 2 :(得分:5)
您可以在父表单的submit
事件中禁用它:
$("form").on("submit", function () {
$(this).find(":submit").prop("disabled", true);
});
请确保仅在加载HTMLFormElement
后运行此代码,否则不会绑定任何内容。为了确保绑定发生,请从document-ready
块中禁用它:
// When the document is ready, call setup
$(document).ready(setup);
function setup () {
$("form").on("submit", function () {
$(this).find(":submit").prop("disabled", true);
});
}
答案 3 :(得分:3)
这样的事情可能有用。
<button id="btnSubmit" type='submit'> Send </button>
<script>
$("#btnSubmit").on("click", function(e){
e.PreventDefault();
$(this).closest("form")[0].submit();
$(this).prop('disabled',true)
});
</script>
答案 4 :(得分:2)
尝试,像这样,
<input type="submit" value="Send" onclick="javascript=this.disabled = true; form.submit();">
答案 5 :(得分:1)
这个怎么样?
onclick="this.style.visibility='hidden';"
我会说,而不是禁用,隐藏它。
如果您想使用disabled
onclick="this.style.disabled='true';"
答案 6 :(得分:1)
我的变种,禁用按钮,没有直接禁用,只有隐藏的视频:
<input type="submit" name="namebutton" value="Nahrát obrázek" onclick="this.style.visibility='hidden';" ondblclick="this.style.visibility='hidden';"/>
答案 7 :(得分:1)
这最终成为我的最佳解决方案
$("form").submit(function disableSubmit() {
$("input[type=submit]", this).prop("disabled", true);
});
答案 8 :(得分:0)
我更喜欢这个:
<script>
var submit = false;
$('form').submit(function () {
if (submit) { return false; }
else { submit = true;}
});
</script>
这样它也可以阻止回车键多次提交
答案 9 :(得分:0)
我正在使用Chrome。我知道为什么会遇到这个问题?
好吧,我第一次处理这个问题时,我解决了这个问题:
private:
__strong void (^callback)(MyState*);
这非常有效,但是......在Mozilla Firefox中。 Google Chrome未提交,因此我将其更改为:
function blockButtons() {
$('button:submit').click(function(){
$('button:submit').attr("disabled", true);
});
}
然而,这在Mozilla Firefox中都有效,之后我们使用旧版本IE的一些用户遇到了两次提交的麻烦。也就是说,由javascript启动的那个,以及浏览器忽略onclick的事实并且无论如何只是提交。我猜这可以通过e.preventDefault修复。
答案 10 :(得分:0)
如果您不想要双击某个元素,请使用.one()
<button id="submit" type="submit">Send</button>
<script>
$(function () {
$("#submit").one("click", function () {
//enter your submit code
});
});
答案 11 :(得分:0)
在Chrome上遇到问题,没有提交表单。尝试了一堆不同的代码,这对我来说效果最好(看起来最好):
$('#form_id').submit(function() {
$("input[type='submit']", this)
.val("Please Wait...")
.attr('disabled', 'disabled');
return true;
});
将 form_id 替换为表单的ID。课程也是如此:$('.form_class')
答案 12 :(得分:0)
你可以这样做。这对我很好。
<form method='post' onSubmit='disableFunction()'>
// your code here
</form>
然后在脚本中添加此
<script>
function disableFunction() {
$('#btn_submit').prop('disabled', true);
}
</script>
答案 13 :(得分:0)
您可以执行以下操作。对我来说很好。
$("button#submitted").click(function () {
$("button#submitted").prop('disabled', true);
});
双击您的按钮。该代码将运行
答案 14 :(得分:0)
您必须防止多次提交表单,禁用按钮不是正确的解决方案,因为可以通过其他方式提交表单。
JavaScript:
$('form').submit(function(e) {
// if the form is disabled don't allow submit
if ($(this).hasClass('disabled')) {
e.preventDefault();
return;
}
$(this).addClass('disabled');
});
正确禁用表单后,您可以自定义其外观。
CSS:
form.disabled {
pointer-events: none;
opacity: 0.7;
}