2017-02-25 56 views
2

onclick事件,您可以在這裏看到:https://jsfiddle.net/vt0u2ddk/切換觸發JavaScript的

var items = document.getElementsByTagName('input'); 
 
for (var i = 0; i < items.length; i++) { 
 
    items[i].onclick = function(e) { 
 
    alert('clicked'); 
 
    console.log('clicked', e.target.value); 
 
    }; 
 
}
<div id="text"> 
 
    <input name="auto" value="foo" type="radio" checked>foo</label> 
 
    <input name="auto" value="bar" type="radio">bar</label> 
 
    <input name="auto" value="ming" type="radio">ming</label> 
 
</div>

如果你點擊一個單選按鈕(不是標籤)第一,你點擊事件的提醒。如果您隨後使用箭頭鍵切換收音機列表的選擇,則每次觸發點擊事件。爲什麼?我正在使用我的鍵盤,而不是我的鼠標。有沒有對此進行解釋和/或解決方法?

+0

什麼是預期的行爲?你想達到什麼目的? – charlietfl

+0

我認爲這是正常的行爲。但是,如果你閱讀這個問題,你可以圍繞它工作:http://stackoverflow.com/questions/27947302/check-if-the-radio-button-is-changed-by-the-keyboard-or-mouse –

回答

1

我建議使用mouseup事件。 click事件考慮將單選按鈕切換爲左鍵單擊(出於某種原因,通過檢查e.button來驗證),但mouseup正確識別兩者之間的差異,並且在使用鍵盤時不會觸發。我的測試似乎驗證了mouseup也能正確識別觸摸事件,但我並非100%。

var items = document.getElementsByTagName('input'); 
 
for (var i = 0; i < items.length; i++) { 
 
    items[i].onmouseup = function(e) { 
 
    alert('clicked: ' + e.button); 
 
    console.log('clicked', e.target.value); 
 
    }; 
 
}
<div id="text"> 
 
    <input name="auto" value="foo" type="radio" checked>foo</label> 
 
    <input name="auto" value="bar" type="radio">bar</label> 
 
    <input name="auto" value="ming" type="radio">ming</label> 
 
</div>