2017-01-22 128 views
0

我有一個JavaScript函數會觸發一次問題。javascript oninput只觸發一次?

我開始時在函數中有一個更簡潔的結構,但是把它分解成不連續的操作來看看我能否計算出任何東西。行爲完全一樣。

在我的HTML,頭部標籤內,我有:

<SCRIPT> 
function onCharInput() 
{ 
var conpagechars = document.getElementById("pagecontentx").innerHTML; 
var conpagecharcount = conpagechars.length.toString(); 
document.getElementById("pccount").innerHTML = conpagecharcount; 
console.log('test',conpagecharcount); 
} 
</SCRIPT> 

在開口CGI textarea的輸入元素,我有這樣的:

id="pagecontentx" oninput="onCharInput()" 

其他地方的頁面上,我有這個:

<span id="pccount"></span> 

當我在文本區域中輸入內容時,跨度會更新爲正確的內容大小 - 恰好一次。之後,它什麼都不做。我可以添加字符,刪除字符...什麼也沒有。在添加控制檯調用後,打開Firefox控制檯,我只看到一次結果。據我所知,函數在第一次之後再也不會被調用。

TIA

+0

CGI爲網絡服務器交談外部程序以處理HTTP請求的裝置。你正在處理客戶端JavaScript。沒有涉及HTTP,所以沒有涉及CGI。 – Quentin

+0

這是一個CGI表單。我擔心的是,有些事情因此而有所不同。這就是我提到它的原因,並不是因爲我認爲服務器在頁面啓動後正在做任何工作。但是,是的,當然你是對的。 – fyngyrz

回答

0

的CGI文字區域,該數據被取出這樣:

var conpagechars = document.getElementById("pagecontentx").value; 

不是這樣:

var conpagechars = document.getElementById("pagecontentx").innerHTML; 

夠簡單。 ;)

1

該函數在每次有輸入事件時觸發,每次只讀取相同的字符串。

一個<textarea>innerHTML代表其默認值。

您需要閱讀value屬性以獲取其當前值值。

document.querySelector("textarea").addEventListener("input", log); 
 

 
function log(event) { 
 
    console.log("Log function is firing"); 
 
    console.log("Current value: " + this.value); 
 
    console.log("Default value: " + this.innerHTML); 
 
}
<textarea>This is the default value</textarea>

+0

很好地完成。我贊成你。 – fyngyrz