Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在mithril.js中单击后禁用按钮以防止多次单击_Javascript_Html_Mithril.js - Fatal编程技术网

Javascript 如何在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

我可以禁用按钮后,点击,但该网页没有得到提交,它只是被禁用。 如何在mithril.js中提交页面并防止多次单击

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所做的更改,它现在正在工作。