我有几个输入字段,这些输入字段通过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
}
});
我为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);
}
});
}
});
尝试使用 $(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'));
}
});
您可以使用
$(this)
或event.target
。
然后,您可以使用$(this).prop('name')
或event.target.name
获取名称。
演示
使用 $(this)
select: function(event, ui) {
$(this).attr('name');
}
据
我所知,对于此示例,您不需要$()
。 this
工作得很好,因为名称是一个定义的属性。
this.name