我可以在点击后禁用按钮,但页面没有提交,它只是被禁用了。如何在mithril.js中提交页面并防止多次点击?
m(".submit", m("input", {
type: "submit",
value: "Send email",
id: "emailbtn",
onclick: function () {
var butn = document.getElementById("emailbtn");
butn.disabled = true;
}
}))发布于 2020-06-20 02:22:59
我通常在组件的闭包中设置一个锁变量。然后使用它来控制是否不传播提交事件。我假设您没有使用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的第三方库,否则您应该避免使用in来操纵dom,就像在jQuery中那样。因此,在我的回答中,我使用locked变量在每次绘制输入时设置输入的disabled属性,而不是直接查找和操作DOM。
关于使用闭包组件的Mithril文档:https://mithril.js.org/components.html#closure-component-state
https://stackoverflow.com/questions/62467089
复制相似问题