2011-04-16 61 views
8

我有以下幾點:如何覆蓋select的默認行爲:在jQuery UI Autocomplete中?

$('#<%=txtCity.ClientID%>').autocomplete({ 
    source: function (request, response) { 
    var parameters = { 
     isoalpha2: '<%=Session["BusinessCountry"].ToString()%>', 
     prefixText: request.term 
    }; 
    $.ajax({ 
     url: '<%=ResolveUrl("~/AtomicService/Assets.asmx/GetCitiesWithState")%>', 
     type: 'POST', 
     dataType: 'json', 
     contentType: 'application/json; charset=utf-8', 
     data: JSON.stringify(parameters), 
     success: function (data) { 
     response($.each(data.d, function (index, value) { 
      return { 
      label: value.slice(value.indexOf(',')), 
      value: parseInt(value.split(',')[0]) 
      } 
     })); 
     } 

    }); 
    }, 
    minLength: 2, 
    delay: 50, 
    select: function (event, ui) { 
    var city = ui.item.label.split(',')[0]; 
    var state = ui.item.label.split(',')[1]; 
    alert(city); 
    alert(state); 
    $('#<%=txtCity.ClientID%>').val(city); 
    $('#<%=txtState.ClientID%>').val(state); 
    }, 
}); 

這是所有幸福的日子,除了當我選擇從自動完成列表中的項目,我想不會有自動完成填充$('#<%=txtCity.ClientID%>')元素。我該怎麼做?我看到了.insertAfter,我應該看看嗎?

幫助讚賞。

+0

我認爲這包括ASP.NET代碼? – 2011-04-16 16:51:16

回答

19

嘗試從select event返回false

... 
select: function(event, ui) { 
    var city = ui.item.label.split(',')[0]; 
    var state = ui.item.label.split(',')[1]; 
    alert(city); 
    alert(state); 
    $('#<%=txtCity.ClientID%>').val(city); 
    $('#<%=txtState.ClientID%>').val(state); 
    return false; 
}, 

從文檔(選擇事件):

當選擇從菜單 的項目觸發; ui.item引用 所選項目。 select的默認操作是將文本字段的 值替換爲所選 項目的值。 取消此事件會阻止 的值更新,但 不會阻止菜單關閉。

You can try it here.

+0

完美!謝謝karim79;)現貨... – dooburt 2011-04-16 17:09:14

+0

謝謝,我正在尋找這個。 – Moy 2014-08-16 00:19:36