2017-10-14 207 views
0

嗨,我是新来的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(); 
    ... 
} 
+0

[addEventListener在没有我的情况下调用该函数时可能会重复](https://stackoverflow.com/questions/16310423/addeventlistener-calls-the-function-without-me-even-asking-it-to ) – DocMax

+0

您需要将引用作为第二个参数传递给'addEventListener'。正如所写的,您正在调用该函数并传递返回的值。查看链接问题以获取更详细的答案。 – DocMax

回答

0

我相信你需要用单击事件处理程序的功能,因此行内容如下:

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

这可以防止它从一开始就被触发,但现在当我尝试呼叫e。 G。 '的console.log(123);'在函数中。 “123”弹出很短的时间,但立即从控制台再次被删除,这很奇怪... – AstronAUT

+0

真的,我想你想看@santoshkumar评论,然后将按钮类型更改为“按钮”而不是“提交” 。 。 。否则,当您查看控制台输出时,它将在表单回发到服务器时消失(即提交按钮行为)。如果您确实需要提交按钮,则可以在警报和页面执行之前暂停您的console.log,直到您单击警报并提供时间检查console.log – BlissRage

0

只要改变按钮类型= “提交” 按钮类别= “按钮”

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