Javascript 如何在mithril.js中单击后禁用按钮以防止多次单击
我可以禁用按钮后,点击,但该网页没有得到提交,它只是被禁用。 如何在mithril.js中提交页面并防止多次单击Javascript 如何在mithril.js中单击后禁用按钮以防止多次单击,javascript,html,mithril.js,Javascript,Html,Mithril.js,我可以禁用按钮后,点击,但该网页没有得到提交,它只是被禁用。 如何在mithril.js中提交页面并防止多次单击 m(".submit", m("input", { type: "submit", value: "Send email", id: "emailbtn", onclick: function () { var butn = document.getElementById("emailbtn"); butn.disabled
m(".submit", m("input", {
type: "submit",
value: "Send email",
id: "emailbtn",
onclick: function () {
var butn = document.getElementById("emailbtn");
butn.disabled = true;
}
}))
我通常在组件的闭包中设置一个锁定变量。然后使用它来控制是否传播提交事件。我假设您没有使用JS提交表单
function MyForm() {
var locked = false;
function onSubmit(e) {
console.log('onSubmit');
if (!locked) {
// Lock our submit function so it does nothing if triggered again
locked = true;
console.log("Send email.");
} else {
e.preventDefault();
}
}
return {
view: function (vnode) {
return m('form', {
method: "post",
action: "",
onsubmit: onSubmit
}, m(".submit", m("input", {
type: "submit",
value: "Send email",
id: "emailbtn",
disabled: locked,
})));
}
};
}
通常,您希望避免像在jQuery中那样使用ID来操纵dom,除非您在实际的jQuery中使用第三方库。因此,在我的回答中,我使用locked
变量在每次绘制输入时设置输入的disabled
属性,而不是直接查找和操作DOM
Mithril关于使用闭包组件的文档:创建一个问题片段我给出了一个答案,假设您正在使用
m.request
或其他东西使用JavaScript提交表单,但您是否正在执行常规的非JS表单提交?@IslamElshobokshy,单击后如何禁用提交按钮,要防止在mithril.js中多次提交,请检查此项,谢谢您的帮助,但这似乎没有按预期工作。我也面临同样的问题,在单击“提交”按钮后,页面被禁用,但未提交。我将更改答案,以假设您没有使用JavaScript请求提交表单值。非常感谢@Ian Wilson所做的更改,它现在正在工作。