2016-06-09 75 views
0

我正在使用純javascript。當發生「onchange」事件時,會有一個複選框附帶一個功能。當從代碼未選中複選框時調用onchange函數

我想調用該函數,當我檢查並從javascript代碼中取消選中它時。

它被檢查和取消選中,但該函數不會被調用,除非我通過鍵盤箭頭鍵手動執行。

有什麼辦法可以讓這個函數被調用嗎?

HTML DOM:

<input type="checkbox" onchange="hello();" id="myCheckBox"> 

的Javascript:

document.getElementById("myCheckBox").checked = true; 
+0

您可以發佈您的代碼嗎? – DavidDomain

+0

對不起,我只是編輯了問題並添加了它。 –

+2

當通過腳本更改複選框狀態時,此事件不會觸發。如果您希望事件處理程序在這種情況下運行,那麼您需要從改變複選框狀態的那部分腳本中自行觸發事件。 http://api.jquery.com/trigger/ – CBroe

回答

1

調用處理函數,你的JavaScript代碼更改複選框元素的狀態。

function toggle() { 
 
    document.getElementById("myCheckBox").checked = !document.getElementById("myCheckBox").checked; 
 
    hello(); //invoke the function here! 
 
} 
 

 
function hello() { 
 
    alert(document.getElementById("myCheckBox").checked) 
 
}
<input type="checkbox" onchange="hello();" id="myCheckBox"> 
 

 
<button onclick='toggle()'>Toggle</button>

+0

沒有按鈕,沒有UI參與 –

+0

@ArianHosseinzadeh,這只是爲了演示... – Rayon

+0

我沒有訪問該功能直接調用它。由於DOM,我必須自然地調用它。 –

0

使用此:

HTMLInputElement.prototype.check = function() { 
    if (this.checked !== null) { 
    this.checked = true; 
    this.onchange(); 
    } 
}; 

HTMLInputElement.prototype.uncheck = function() { 
    if (this.checked !== null) { 
    this.checked = false; 
    this.onchange(); 
    } 
}; 

document.getElementById("myCheckBox").check();