2017-08-05 106 views
0

我仍然是一個前端的新手。我在尋找快速調試JavaScript代碼提交textarea標記的變化。Javascript:提交更改爲textarea不起作用

我用瀏覽器控制檯調試了它,但還沒有弄清楚它是如何被誤操作的。 所需的行爲應該是更改按鈕最初是隱藏的,然後當用戶開始更改文本區域中的內容時,會出現該按鈕。點擊按鈕後,它保留這個改變。

我試圖查找與此行爲相關的類似錯誤,但這些錯誤既不是JavaScript,也不完全與我的相關。

這裏的HTML代碼段爲特色的Javascript(我忽略CSS現在創建演示文稿):

<form> 
    <input type="button" value="Change" id="submitChange" disabled> 
     <textarea id="textChange" rows="10" cols="30" onchange="venueTextChange();"> Write something here </textarea> 
     <script> 
      function venueTextChange(){ 
         var val document.getElementById("textChange").disabled; 
         document.getElementById("submitChange").disabled = !val; 
        }; 
    </script> 
</form> 

第二:我也想知道如何重構這段代碼,這樣我就可以外部化這腳本以這種方式,< textarea>標記不必設置功能venueTextChange()顯式地在元素 - 我想隱藏它,但對於這種情況下,我想我必須包括屬性onchange

也許,像.addEventListener('onchange',...)在外部.js腳本可以工作嗎?問題的

+0

你有一個錯字,變量名和右邊沒有等號,即'val = document ...'。是的,你會使用addEventListener,但它會通過'change'而不是'onchange',當使用addEventListener –

回答

1

部分原因是onChange事件只有當元素已失去焦點,火災即當用戶改變了文本和模糊的領域:

https://www.w3schools.com/jsref/event_onchange.asp

你需要使用類似keyuponInput,以便立即觸發事件,並且是 - 爲了不必調用onchange屬性上的功能,可以將事件偵聽器從另一個腳本添加到該元素。

這裏有一個小提琴證明:https://jsfiddle.net/25xmka43/

+0

感謝您的高效響應時,您會放棄「on」。 Tbh,我認爲JavaScript線程的響應速度是最快的!我從來沒有想過這真的很快! – Goldie

+0

能否解釋* .addEventListener()*中第二個參數的緊湊語法?我發現它看起來像閉包,但是箭頭指針是什麼意思? – Goldie

+0

@Goldie,[Arrow Functions]的語法(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions) –

0

這裏是soultion: 只是venueTextChange()函數VAL爲false改變。

<form> 
    <input type="button" value="Change" id="submitChange" disabled> 
     <textarea id="textChange" rows="10" cols="30" onchange="venueTextChange()"> Write something here </textarea> 
     <script> 
      function venueTextChange(){ 
         document.getElementById("submitChange").disabled = false; 
        }; 
    </script> 
</form>