HTML Seleccione cambiar los incendios de events en la barra de desplazamiento, click Chrome cuando la label de selección tenga un atributo de tamaño

Tengo un cuadro de selección simple con un atributo de tamaño y quiero llamar a una function cuando cambia su valor.
Así que agregué un evento onchange a la label de selección:

<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> 

Ver http://jsfiddle.net/MGtJZ/2/ .

En Chrome [Versión 27.0.1453.94 m] en Windows 7 Pro (no en IE o Firefox de mis testings), el evento onchange se activa cuando simplemente hace clic en la barra de desplazamiento del cuadro de selección, sin que el valor haya cambiado.

Esto también ocurre si tengo un evento de cambio jQuery registrado en lugar de usar JavaScript puro ( http://jsfiddle.net/MGtJZ/1/ ), es decir, elimino el atributo onchange y logging el controller de events de cambios de la siguiente manera:

 $(function () { $('#selecttest').change(function () { alert($(this).val()); }); }); 

¿Es esto lo que debería esperar?

Nota: Esto solo ocurre si primero hace clic en la barra de desplazamiento o flechas. Si hace clic en el valor seleccionado u otro valor, luego hace clic en la barra de desplazamiento / flechas, este comportamiento se detiene.

Esto parece ser un problema conocido con 27.0.1453.94.

  • Problema 244406: El cuadro SELECCIONAR con opción MÚLTIPLE dispara el evento ONCHANGE en desplazamiento
  • Problema 16184002: REGRESIÓN: Seleccionar listbox distribuye un evento de cambio en desplazamiento. (Cerrado)

En mi installation de Chromium no sucede. Estoy bastante seguro de que esto es un error y no debería esperarse. Podría hacer una solución bastante fácil:

 $(function () { var lastVal; $('#selecttest').change(function () { var v = $(this).val(); if (v != lastVal) { fireYourRealOnChangeEventHere(); lastVal = v; } }); });