2011-03-21 16 views
6

Estamos usando Autocompletar JQuery UI y tengo problemas para borrar el cuadro de texto que contiene el término de búsqueda una vez que se completa la consulta. Aquí está nuestro código jQuery:Borrar el campo de formulario después de seleccionar para jQuery UI Autocompletar

$(document).ready(function() { 
     $("form#search input#term").autocomplete({ 
      source: '<%= Url.Action("Display", "Search") %>', 
      delay: 200, 
      minLength: 3, 
      parse: function (data) { 
       var array = new Array(); 
       for (var i = 0; i < data.length; i++) { 
        array[array.length] = { data: data[i], value: data[i], result: data[i].link }; 
       } 
       return array; 
      }, 
      select: function (event, ui) { 
       window.location.href = ui.item.value; 
       $(this).val() = ""; 
       return false; 
      } 
     }); 
    }); 

Este código funciona bien en Firefox, pero el IE 8 es lanzar una excepción y da un cuadro de diálogo preguntando si quiero usar el IE depurador de guiones. Vi esta publicación de Stack Overflow: Clear form field after select for jQuery UI Autocomplete que dice que la solución al problema es devolver falso desde la función de selección JQuery, pero eso no ayudó. ¿Alguien tiene sugerencias sobre cómo solucionar esto?

+0

No creo que este sea el complemento de autocompletar jQueryUI oficial (http://jqueryui.com/demos/autocomplete/) debido a la opción 'analizar'. ¿Es este el caso? Si es así, su pregunta probablemente debería vincularse al plugin correcto. –

+0

@Andrew, gracias por el comentario, pero creo que es el JQueryUI oficial. Descargamos el archivo llamado archivo jquery-ui-1.8.5.custom.min.js del sitio JQuery UI. Este archivo está un poco anticuado, la versión actual es jquery-ui-1.8.11.custom.min.js, que también he descargado, lo he probado con la última versión de JQuery, y luego Autocompletar no funciona para mí en todas . –

+0

Bueno, no hay opción 'analizar' en el widget jQueryUI (hasta donde yo sé). La funcionalidad que espera que provenga de esa opción podría estar causando algunos problemas (una posibilidad remota). –

Respuesta

1

La única forma que he encontrado para solucionar este problema era utilizar el viejo jQuery 1.4.1 DLL junto con el nuevo DLL jQuery UI, versión 1.8.11, Creo que hay un dll JQuery después de la versión 1.4.1 que causa este problema. Si es así, tal vez una versión futura lo arreglará.

+0

Usando jQuery 1.8.2 y jqueryUI 1.9.0 el truco 'event.preventDefault()' mencionado en la respuesta más votada hizo la magia para mí. http://stackoverflow.com/a/5648954/1063730 – yoshi

2
$(this).val(''); 

en lugar de

$(this).val() = ""; 
+0

Gracias - Debería haber mencionado que ya lo intenté antes de la publicación y el resultado fue el mismo. –

+0

Extrañamente, esto funcionó para mí, no sé cómo 'val()' funciona, pero obviamente no es tan simple como pensaba. –

10

usando jQuery 1.5.1 y 1.8.10 jQuery-UI, las siguientes obras para mí:

select: function (event, ui) { 
       event.preventDefault() // <=== 
       window.location.href = ui.item.value; 
       $(this).val('');     
      } 
+0

Sí, es el 'PreventDefault' que hace el truco aquí ... Sin embargo, me gustaría saber para qué se 'supone'. – isNaN1247

+0

preventDefault también me ayudó. ¡Gracias! –

0

esto funciona para mí ...

jQuery('.SELECETOR'). autocomplete({ 
    .... 
    .... 
}).on("autocompleteselect", function(event, ui) { 
       jQuery(this).val(''); 
     }); 
0

Esto funciona para mí:

jQuery('.SELECTOR'). autocomplete({ 
    // Code 
}).on("autocompleteselect", function(event, ui) { 
    jQuery(this).val(''); 
}); 
Cuestiones relacionadas