我在表单末尾添加了一个提交按钮。
我已经给提交按钮添加了以下条件:
onClick="this.disabled=true;
this.value='Sending…';
this.form.submit();"
但是当它移动到下一页时,参数没有传递,传递的是空值。
我在表单末尾添加了一个提交按钮。
我已经给提交按钮添加了以下条件:
onClick="this.disabled=true;
this.value='Sending…';
this.form.submit();"
但是当它移动到下一页时,参数没有传递,传递的是空值。
我认为你不需要 this.form.submit()
。禁用代码应该运行,然后它会传递点击事件,这将点击表单。
好的,我进行了大量研究,以使其完美运行。因此,最好的选择是创建一个设置超时来在单击时禁用按钮。但是,当后端正在运行提交函数时,问题就出现了。然后事件会在队列中堆积起来,每当将javascript代码“button.disabled == true”添加到onclick事件中时,只有第一个动作(即禁用按钮)会被触发,而不是在后端运行的提交操作(此后端提交函数可以包括任何内容,例如$.ajax)。
要在单击时禁用单个按钮:
function() { //i always create annonymous function to avoid polluting global
space
var btn = document.getElementsByClassName("btn");
btn.onclick = function() {
setTimeout(function() {
backButton.disabled = true;
}, 0);
};
}
}();
这段代码将禁用您的按钮,并在队列上运行该函数。timeout = 0 实际上用于触发后续的后端任务。
要禁用屏幕上的所有按钮:
(function() {
let i, element, list, o;
element = document.getElementsByClassName("classx");
if (element) {
element = element[0];
list = element.getElementsByTagName("button");
for (i = 0; i < list.length; i++) {
o = list[i];
o.onclick = function() {
setTimeout(function() {
let i;
for (i = 0; i < list.length; i++) {
list[i].disabled = true;
}
}, 0);
return true;
}
}
}
})();
这将帮助您禁用页面中存在的所有按钮。(根据您的用例使用它即可。) 此外,这(禁用按钮)是settimeout=0的一个很好的用例,功能描述为它将“延迟”调用,直到当前“堆叠的JavaScript事件”完成。
谢谢,希望这能帮助未来的某个人。
你的问题有点混乱,最好贴一些代码。不过这个应该可以解决:
onClick="this.disabled=true; this.value='Sending...'; submitForm(); return false;"
我认为当你使用 this.form.submit()
时,它会自然地执行点击提交按钮时发生的操作。如果你想要同一页提交,你应该研究在 submitForm()
方法中使用 AJAX。
此外,在 onClick
属性值的末尾返回 false
可以抑制默认事件的触发(在这种情况下是提交表单)。
<asp:button id="btnAbort" runat="server" OnClick="btnAbort_Click" OnClientClick="if (!abort()) {return false;};" UseSubmitBehavior="false" text="Abort" ></asp:button>
我遇到问题是因为 .net 可以更改按钮的名称
function abort() {
if (confirm('<asp:Literal runat="server" Text="Do you want to abort?" />')) {
var btn = document.getElementById('btnAbort');
btn.disabled = true;
btn.innerText = 'Aborting...'
return true;
}
else {
return false;
}
}
因为您正在使用OnClientClick覆盖OnClick,即使验证方法成功,代码后台也不会起作用。这就是为什么您需要将UseSubmitBehavior设置为false才能使其正常工作。
PS:如果您的代码是vb.net,则不需要使用OnClick!
id=WAIT style="display:none"> 要显示的文本(结束 div)
将代码包装到一个 div 中隐藏id=BUTTONS style="display:inline"> ... 按钮或其他要隐藏的内容
onclick="showwait();"
(结束 div)
我认为禁用按钮的简单方法是 :data => { disable_with: "Saving.." }
。这将提交一个表单,然后使按钮失效,如果您有任何验证,如required = 'required'
,它也不会禁用按钮。
我成功了。当设置超时时,它可以完美地发送所有值。
$(document).ready(function () {
document.getElementById('btnSendMail').onclick = function () {
setTimeout(function () {
document.getElementById('btnSendMail').value = 'Sending…';
document.getElementById('btnSendMail').disabled = true;
}, 850);
}
});