【问题标题】:How can I dispatch a checkbox click programmatically?如何以编程方式发送复选框单击?
【发布时间】:2020-10-22 08:54:36
【问题描述】:

我在这里和那里尝试了几个 javascript 函数,但似乎没有一个对我有用。 我正在做的是展示一个塔,它有用户希望的多个阶段。这基本上是使用 Js 为每个阶段创建 HTML 标签,最后一个是复选框。 我想做的事情是,当我单击一个复选框时,该复选框上方的所有其他复选框也会以编程方式进行检查。所以这就是我所做的:

    let event = new Event('click');

    //Here, q is the maximum stage that the user set.

    document.addEventListener('click', function(e) {
        let readStr = e.target.id;
        if (readStr.startsWith("checkboxFan") && e.isTrusted) {
            for (let r=parseFloat(readStr.substr(-1))+1; r<=q; r++) {
                document.getElementById("checkboxFan"+r).dispatchEvent(event);
            }
        }
    }, false);

它可以很好地找到 ID 并执行我想要的操作,但是 dispatchEvent 没有按预期工作。事实上,它根本不起作用。此外,“click()”功能有效,但 isTrusted 被触发,这不是我想要的,因为该复选框必须由用户单击。

有什么解决办法吗?

【问题讨论】:

    标签: javascript checkbox dispatchevent


    【解决方案1】:

    我根据你的描述写了一些代码。
    https://stackblitz.com/edit/js-poevax?file=index.js

    document.addEventListener(
      "click",
      function(e) {
        let readStr = e.target.id;
        if (readStr.startsWith("checkboxFan") && e.target.checked) {
          for (let r = parseFloat(readStr.substr(-1)) + 1; r <= q; r++) {
            document.getElementById("checkboxFan" + r).checked = true;
          }
        }
      },
      false
    );
    

    您应该查看此页面。
    Input Checkbox checked Property

    干杯!

    【讨论】:

    • 怎么想不到,啊哈!非常感谢;)
    • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review
    • @MarkRotteveel 谢谢你的建议。下次我会更小心的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-04
    • 2023-03-30
    • 1970-01-01
    • 2011-05-24
    • 1970-01-01
    • 1970-01-01
    • 2014-01-08
    相关资源
    最近更新 更多