首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在mithril.js中禁用单击后中的按钮以防止多次单击

如何在mithril.js中禁用单击后中的按钮以防止多次单击
EN

Stack Overflow用户
提问于 2020-06-19 17:18:34
回答 1查看 274关注 0票数 0

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

代码语言:javascript
复制
m(".submit", m("input", {
    type: "submit",
    value: "Send email",
    id: "emailbtn",
    onclick: function () {
       var butn = document.getElementById("emailbtn");
       butn.disabled = true;
    }
}))
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-20 02:22:59

我通常在组件的闭包中设置一个锁变量。然后使用它来控制是否不传播提交事件。我假设您没有使用JS提交表单。

代码语言:javascript
复制
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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62467089

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档