2010-12-08 14 views
6

Tengo un cuadro de texto con fuente de datos remota para autocompletar (jquery) [no el complemento, el original mostrado en jquery ui demos] ¿Cómo me aseguro de que el usuario escribió solo lo que estaba en una de las sugerencias de autocompletar y nada de su propio ?validando jquery autocompletar

Respuesta

13

La pregunta carece de detalles, pero supongo que quiere decir validar en el lado del cliente ya que se refirió explícitamente al complemento autocompletar. Esta respuesta tendrá dos partes. La primera es la respuesta original, suponiendo un complemento de autocompletar. El segundo se revisa en base a las actualizaciones de la pregunta.

1) Usando http://docs.jquery.com/Plugins/Autocomplete

La mejor solución para esto es la opción "mustMatch". Aquí está la API documentation.

Si se establece en verdadero, el autocompletador solo permitirá los resultados que se presenten en el back-end. Tenga en cuenta que los valores ilegales dan como resultado un cuadro de entrada vacío.

Usted debe ser capaz de utilizarlo de esta manera:

$("selector").autocomplete("url", {"mustMatch": true}); 

También puede validar la entrada del usuario de alguna manera en el caso de "número". Aquí hay un enlace: http://docs.jquery.com/Plugins/Autocomplete/result.

2) Utilizando http://jqueryui.com/demos/autocomplete

No hay ninguna opción mustMatch aquí. Puede ampliar el complemento, o puede agregar algo similar a lo que mencioné para el otro complemento de autocompletar. Use el evento "change".

$(".selector").autocomplete({ 
    change: function(event, ui) { ... } 
}); 

Si estuviera utilizando una matriz como fuente de datos, esto sería más eficiente. Dado que está utilizando una fuente de datos remota, necesitaría hacer otra consulta final usando ui.item para validar el valor del usuario. A continuación, puede permitir o denegar el comportamiento predeterminado.

En cualquier caso, la entrada aún debe validarse de alguna manera en el lado del servidor. Esto está fuera del alcance de los complementos jQuery.

+0

lo siento, me olvidé de mencionar, estoy utilizando esta función de autocompletar: http://jqueryui.com/demos/autocomplete/#default y no parece ser compatible con mustMatch :( – Shrinath

+0

Lástima. He actualizado mi respuesta para incluir una sugerencia para ese complemento también. – jthompson

+0

Aunque esta pregunta es muy antigua y dado que la opción mustMatch nunca parece ser compatible, aún estoy buscando una solución similar. Tal vez mi pregunta también te ayude: http: // stackoverflow.com/questions/23778628/firing-event-on-jquery-ui-autocomplete-before-minlength – webDEVILopers