Как получить элемент ввода, запускающий виджет автозаполнения jQuery?
У меня есть несколько полей ввода, которые улучшены с помощью функции автозаполнения 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
}
});
Ответы
Ответ 1
Попробуйте использовать $(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'));
}
});
Ответ 2
Я использовал анонимную функцию для параметра source
, а $(this)
внутри него ссылался на функцию, а не на элемент, запускающий ее. Мне пришлось использовать $(this.element)
.
Окончательный код закончился аналогично этому (я упростил его для демонстрационных целей):
$( ".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);
}
});
}
});
Ответ 3
Вы можете использовать $(this)
или event.target
.
Затем вы можете получить имя с помощью $(this).prop('name')
или event.target.name
.
демонстрация
Ответ 4
Насколько я могу судить по этому примеру, вам не понадобится $()
. this
будет работать отлично, поскольку имя является определенным атрибутом.
this.name
Ответ 5
Используйте $(this)
select: function(event, ui) {
$(this).attr('name');
}