2012-10-09 22 views
14

Tengo varios campos de entrada que se mejoran con la funcionalidad de autocompletar de jQuery. ¿Cómo obtener el campo de entrada correspondiente cuando se activa un evento de selección?¿Cómo obtener el elemento de entrada que activa el widget de autocompletar jQuery?

<input name="1" value=""> 
<input name="2" value=""> 
<input name="3" value=""> 

$('input[type=text]').autocomplete({ 
    source: 'suggestions.php', 
    select: function(event, ui) { 
     // here I need the input element that have triggered the event 
    } 
}); 

Respuesta

8

Trate de usar $(this)

$('input[type=text]').autocomplete({ 
    source: 'suggestions.php', 
    select: function(event, ui) { 
     // here I need the input element that have triggered the event 
     alert($(this).attr('name')); 
    } 
}); 
+0

Gracias, eso es todo! Estaba intentando $ (this) .name preguntándome por qué no está definido. :) –

+0

De nada, solo lo perdí por eso. – Adil

1

Uso $(this)

select: function(event, ui) { 
     $(this).attr('name'); 
    } 
3

Puede utilizar $(this) o event.target.

Luego puede obtener el nombre usando $(this).prop('name') o event.target.name.

demo

+0

+1 Para el evento.objetivo. Estaba un poco escéptico sobre el uso de $ (esto) (cierre y tal). Pero tanto el trabajo como el evento. Objetivo es información nueva para mí. – Awemo

3

Por lo que yo puedo decir con este ejemplo, usted no necesitaría la $(). this funcionaría bien ya que el nombre es un atributo definido.

this.name

23

que estaba usando una función anónima para el source parámetro, y dentro de él $(this) referencia a la funcion, no el elemento que estaba provocando la misma. Tuve que usar $(this.element).

El código final terminó similar a este (he simplificado para fines de demostración):

$(".regionsAutocomplete").autocomplete({ 
    source: function(request, response){ 

     //The next line is the important one for this example 
     var input = this.element; 
     $(input).css('color','red'); 

     var data = {'foo':'bar'}; 
     $.ajax({ 
      'url': ajaxurl, 
      'data': data, 
      'method': "POST", 
      'dataType': "json", 
      'success': function(data) { 
       response(data); 
      } 
     }); 
    } 
}); 
+1

thx para esto ... el mío también estaba en la cláusula source – PeterG

+0

Gracias, esto es lo que necesitaba también. Es particularmente útil cuando desea pasar los atributos del campo de entrada de autocompletar como parámetros a su script de búsqueda de destino. –

+0

El valor consultado en realidad reside en 'request.term'. Al menos uso esto todo el tiempo. – silkfire

Cuestiones relacionadas