2012-10-09 6 views
14

Ich habe mehrere Eingabefelder, die mit jQuery Auto-Vervollständigung Funktionalität erweitert werden. Wie erhalte ich das entsprechende Eingabefeld, wenn ein Select-Event ausgelöst wird?Wie erhält man das Eingabeelement, das das jQuery-Autocomplete-Widget auslöst?

<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 
    } 
}); 

Antwort

8

Versuchen $(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

Danke, das ist es! Ich habe versucht, $ (this) .name zu fragen, warum es undefiniert ist. :) –

+0

Sie sind herzlich willkommen, nur entschuldigen Sie das. – Adil

1

Verwenden $(this)

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

Sie $(this) oder event.target verwenden können.

Dann können Sie den Namen mit $(this).prop('name') oder event.target.name erhalten.

demo

+0

+1 Für das event.target. War ein bisschen skeptisch über die Verwendung von $ (this) (Schließung und so). Aber sowohl Arbeit als auch event.target sind neue Informationen für mich. – Awemo

3

Soweit ich für dieses Beispiel sagen kann, würden Sie die $() nicht brauchen. this würde gut funktionieren, da name ein definiertes Attribut ist.

this.name

23

Ich war eine anonyme Funktion für die source param verwenden und $(this) im Inneren der funcion Bezug genommen wird, nicht das Element, das es wurde ausgelöst wird. Ich musste $(this.element) verwenden.

Der endgültige Code endete ähnlich wie diese (ich es für Demozwecke vereinfacht):

$(".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 für diese ... meins war auch in der Quellklausel – PeterG

+0

Danke das ist, was ich auch brauchte. Dies ist besonders nützlich, wenn Sie die Attribute des Autocomplete-Eingabefelds als Parameter an Ihr Zielsuchskript übergeben möchten. –

+0

Der abgefragte Wert befindet sich tatsächlich in 'request.term'. Zumindest benutze ich das die ganze Zeit. – silkfire

Verwandte Themen