jQuery:自动完成后文本框文本更改事件?

时间:2014-10-30 18:32:20

标签: javascript c# jquery model-view-controller autocomplete

我正在为文本框使用jquery自动完成插件:

$('#TargetArea').autocomplete({
    source: '@Url.Action("GetTarget", "Ads", new { type = "Zip", term = target })'  
    });

工作正常。现在,我想做的是:当文本框文本发生变化时,调用一个动作从数据库中获取数据,然后在另一个div中显示数据。

$('#TargetArea').change(function () {
       var url = "/My/Test";
       var target = $("#TargetArea").val();
       $.post(url, { Target: target }, function (data) {
           $("#resultId").html(data);
       });
   })

但是,此更改事件从未触发过。如果我注释掉自动完成部分,那么它可以正常工作。谁知道问题是什么?或者,我该怎么做?

由于

2 个答案:

答案 0 :(得分:0)

我认为您应该使用自动完成插件的更改事件。

请参阅此处的文档:http://api.jqueryui.com/autocomplete/#event-change

检查一下,我认为它应该有用。

$( "#TargetArea" ).autocomplete({
  source: '@Url.Action("GetTarget", "Ads", new { type = "Zip", term = target })',  
  change: function( event, ui ) {}
});

答案 1 :(得分:0)

你可以做到这一点

1 - 使用指定的更改回调初始化自动完成:

    $( '#TargetArea' ).autocomplete({
      source: '@Url.Action("GetTarget", "Ads", new { type = "Zip", term = target })',
      change: function( event, ui ) {
       var url = "/My/Test";
       var target = $("#TargetArea").val();
       $.post(url, { Target: target }, function (data) {
           $("#resultId").html(data);
       });
      }
    });

2-将事件监听器绑定到autocompletechange事件:

$('#TargetArea').autocomplete({
    source: '@Url.Action("GetTarget", "Ads", new { type = "Zip", term = target })'  
    });

    $( '#TargetArea' ).on( "autocompletechange", function( event, ui ) {
                            var url = "/My/Test";
                            var target = $("#TargetArea").val();
                            $.post(url, { Target: target }, function (data) {
                                    $("#resultId").html(data);
                                   });
                            });

当字段模糊时,如果值已更改,则会触发此操作。

来源:http://api.jqueryui.com/autocomplete/#event-change