21

我有几个使用 jQuery 自动完成功能增强的输入字段。触发select事件时如何获取对应的输入框?

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

5 回答 5

35

我为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);
            }
        });
    }
});
于 2014-10-23T07:38:20.663 回答
13

尝试使用$(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'));
    }
});
于 2012-10-09T21:43:38.517 回答
4

您可以使用$(this)event.target

然后您可以使用$(this).prop('name')or获取名称event.target.name

演示

于 2012-10-09T21:46:03.297 回答
3

据我所知,您不需要$(). this会工作得很好,因为 name 是一个定义的属性。

this.name

于 2012-10-09T22:05:25.737 回答
2

采用$(this)

 select: function(event, ui) {
        $(this).attr('name');
    }
于 2012-10-09T21:45:27.623 回答