jquery-ui – Jquery UI自动完成事件更改

嗨,我遇到了变更事件的问题.
通过documntation应该有对象ui.item

After an item was selected; ui.item refers to the selected item. Always triggered after the close event.

但是当我尝试它时,ui.item是未定义的:(当自动完成中的输入与脚本中的数据不匹配时,我想要取消设置s_town_id.

<input id="s_town" type="text" name="s_town" />
<input type="text" id="s_town_id" name="s_town_id"  />

$(function() {
  $("#s_town").autocomplete({
   source: function(request,response) {
    $.ajax({
     url: "/_system/_ajax/uiautocomplete.PHP",dataType: "json",data: {
      name: "s_town",term: request.term
     },success: function(data) {
      response($.map(data,function(item) {
       return {
        label: item.whisper_name+ " [" + item.zip_code + " / " + item.lup_state + "]",value: item.whisper_name,id: item.whisper_id,zip_code: item.zip_code,lup_state: item.lup_state,stateid: item.stateid
       }
      }))
     }
    })
   },minLength: 2,select: function(event,ui) {
    $("#s_town_id").val(ui.item.id);
   },change: function(event,ui)
   {
    // ui.item is undefined :( where is the problem?
    $("#s_town_id").val(ui.item.id);
   }

  });


 });

解决方法

我找到了测试event.originalEvent.type的解决方案,如果它是meneuselected或者没有,并且在失败后我取消了s_town_id.但任何更好的解决方案仍然很好.
<input id="s_town" type="text" name="s_town" />
<input type="text" id="s_town_id" name="s_town_id"  />

$(function() {
  $("#s_town").autocomplete({
   source: function(request,ui)
   {
    try
    {
        if(event.originalEvent.type != "menuselected")
        {
             // Unset ID
             $("#s_town_id").val("");
        }
    }
    catch(err){ 
        // unset ID 
        $("#s_town_id").val("");
    }
   }

  });


 });

相关文章

页面搜索关键词突出 // 页面搜索关键词突出 $(function () {...
jQuery实时显示日期、时间 html: &lt;span id=&quot...
jQuery 添加水印 &lt;script src=&quot;../../../.....
中文:Sys.WebForms.PageRequestManagerParserErrorExceptio...
1. 用Response.Write方法 代码如下: Response.Write(&q...
Jquery实现按钮点击遮罩加载,处理完后恢复 思路: 1.点击按...