bootstrap jquery html5 option html-datalist

jquery - bootstrap - html5 datalist option selected



Evento jQuery cuando se hace clic en la opciĆ³n HTML5 Datalist (3)

Para manejar click solo evento aquí está la solución.

$("#book_search").bind(''select'', function () { alert("changed"); });

Lo que tengo ahora:

Así que tengo este Datalist HTML5 con un montón de opciones en él, y tengo 2 eventos de disparo. Uno cuando el usuario escribe algo que coincide con algo con el conjunto de nombres que está poblando las opciones como "Rick Bross" o "Jack Johnson" (keyup). Otro evento que se activa cuando un usuario comienza a escribir el nombre, aparece, las flechas del usuario hacia abajo y pulsa "enter" (cambiar).

El problema:

Necesito un evento para activarlo cuando el usuario haga clic en una de las opciones desplegables, ANTES de que escriba el nombre completo y antes de que el objeto se vea borroso. Si un usuario hace clic en uno ahora mismo antes de que se escriba completamente el nombre, los 2 eventos solo activarán la función una vez que la entrada esté borrosa.

El marcado:

<datalist id="potentials"> <option value="Rick Bross"> <option value="Jack Johnson"> <option value="Rick Bross"> <option value="Rick Bross"> </datalist>

Eventos y funciones de Javascript:

window.checkModelData = function(ele) { var name = $(ele).val().replace(" ", ""); var mod = potentialModels[name]; if(mod) { loadModelData(name); } } function loadModelData(name) { var mod = potentialModels[name]; $("#address").val(potentialModels[name].address); $("#city").val(potentialModels[name].city); $("#state").val(potentialModels[name].state); $("#email").val(potentialModels[name].email); $("#phone").val(potentialModels[name].phone); $("#zip").val(potentialModels[name].zip); } $("#name").keyup(function(){ window.checkModelData(this); }); $("#name").change(function(){ window.checkModelData(this); });


También puede escuchar el evento ''seleccionar'' en el campo de entrada.

$(''#name'').bind(''select'', function() { // handle input value change });


Utilice el evento de input lugar de los otros eventos. En realidad está diseñado para cubrir lo que quieres:

$("#name").bind(''input'', function () { window.checkModelData(this); });

Hice un jsfiddle para que lo pruebes.