[英]HTML Select change event fires on scroll bar click in Chrome when select tag has a size attribute
我有一個帶有size屬性的簡單選擇框,我希望在值改變時調用一個函數。
所以我在select標簽中添加了一個onchange事件:
<select onchange="alert(this.options[this.selectedIndex].value);" size="6" id="selecttest">
<option value = "1">1</option>
<option value = "2" selected>2</option>
<option value = "3">3</option>
<option value = "4">4</option>
<option value = "5">5</option>
<option value = "6">6</option>
<option value = "7">7</option>
<option value = "8">8</option>
<option value = "9">9</option>
<option value = "10">10</option>
<option value = "11">11</option>
<option value = "12">12</option>
</select>
見http://jsfiddle.net/MGtJZ/2/ 。
在Windows 7 Pro中的Chrome [版本27.0.1453.94 m](我的測試中不在IE或Firefox中),只需單擊選擇框的滾動條,而不更改值,就會觸發onchange事件。
如果我注冊了jQuery更改事件而不是使用純JavaScript( http://jsfiddle.net/MGtJZ/1/ ),也就是說,我刪除了onchange屬性並注冊了更改事件處理程序,就會發生這種情況:
$(function () {
$('#selecttest').change(function () {
alert($(this).val());
});
});
這是我應該期待的嗎?
注意:僅當您首先單擊滾動條或箭頭時才會發生這種情況。 如果單擊所選值或其他值,然后單擊滾動條/箭頭,此行為將停止。
這似乎是27.0.1453.94的已知問題。
在我的Chromium安裝上它不會發生。 我很確定這是一個錯誤但不應該被預料到。 你可以很容易地解決這個問題:
$(function () {
var lastVal;
$('#selecttest').change(function () {
var v = $(this).val();
if (v != lastVal) {
fireYourRealOnChangeEventHere();
lastVal = v;
}
});
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.