2017-10-14 163 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> 
相關問題