簡體   English   中英

HTML當select標簽具有尺寸屬性時,選擇滾動條上的更改事件觸發點擊Chrome

[英]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());
  });
});

這是我應該期待的嗎?

注意:僅當您首先單擊滾動條或箭頭時才會發生這種情況。 如果單擊所選值或其他值,然后單擊滾動條/箭頭,此行為將停止。

在我的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM