【问题标题】:click event triggers without button click没有按钮点击的点击事件触发
【发布时间】:2017-10-15 00:11:06
【问题描述】:

您好,我是 JS 新手,需要一些帮助。

所以我基本上试图在提交按钮单击事件上将一些文本从 textarea 发送到名为 inputFromText 的函数,但不知何故,该函数在单击之前被触发(通过电子打开 html 窗口时)并且什么都没有之后单击按钮时会发生这种情况。

如何防止这种情况发生?

<body>
  <form>
    <div class="form-group">
      <textarea class="form-control" rows="5" id="txa_trainingText"></textarea>
      <button type="submit" class="btn btn-default" id="btn_submit">Submit</button>
    </div>
  </form>
  <script>
    const trainingText = document.getElementById("txa_trainingText").value;
    document.getElementById("btn_submit").addEventListener("click", inputFromText(trainingText));
    function inputFromText(text) {
      ...
    } 
  </script>
</body>

我发现当使用不带文本参数的函数时,可以通过以下方式解决问题:

function inputFromText(e) {
  e.preventDefault();
  ...
}

【问题讨论】:

标签: javascript html click electron addeventlistener


【解决方案1】:

我相信您需要将 click 事件处理程序包装为一个函数,因此行将显示为:

document.getElementById("btn_submit").addEventListener("click", function() { inputFromText(trainingText)});

【讨论】:

  • 这可以防止它从一开始就被触发,但现在当我试图调用 e. G。 'console.log(123);'在函数中。 “123”弹了一小会儿,马上又被控制台删除了,好奇怪……
  • true,我想你想看看 @santoshkumar 评论然后将按钮类型更改为 "button" 而不是 "submit" 。 . .否则,当您查看控制台输出时,它会在表单回发到服务器时消失(即提交按钮行为)。如果你真的需要一个提交按钮,你可以在警报之前执行你的 console.log,页面执行将暂停,直到你点击警报,让你有时间检查 console.log
【解决方案2】:

只需将按钮类型=“提交”更改为按钮类型=“按钮”

<button type="button" class="btn btn-default" id="btn_submit">Submit</button>

【讨论】:

    最近更新 更多