2014-04-08 44 views
0

更改事件在我的項目即時通訊使用jQuery自動完成,這是偉大的工作。 問題是,我想處理的情況是用戶更改了文本的輸入。前者爲 。數據包含(「prov 1」,「prov 2」),用戶從菜單「prov 1」中選擇,但是隨後通過將2改爲1來將其更改爲「prov 2」。 我實施了「更改」事件js但ui.item是空的(我想因爲菜單沒有顯示..) 我讀到「更改」事件僅在文本框失去焦點時觸發 - >對我沒有好處,因爲流程正在選擇「prov」並單擊按鈕繼續。 有什麼建議?在自動完成jQuery

這裏是我的代碼: JS

$(element).autocomplete({ 
     minLength: 2, 
     source: function (request, response) { 
      $.ajax({ 
       url: requestUrl, 
       dataType: "json", 
       data: { query: request.term }, 
       success: function (data) { 
        response($.map(data, function (item) { 
         return { 
          label: item.Label, 
          value: item.Label, 
          realValue: item.Value 
         }; 
        })); 
       }, 
      }); 
     }, 
     select: function (event, ui) { 
      var hiddenFieldName = $(this).attr('data-value-id'); 
      $('#' + hiddenFieldName).val(ui.item.realValue); 
      hiddenFieldName = $(this).attr('data-value-name'); 
      $('#' + hiddenFieldName).val(ui.item.label); 
     }, 
     change: function (event, ui) { 
      alert('changed'); 
      if (!ui.item) {      
       alert('no value'); /* IS FIRED */ 
      } else { 

      } 
     } 
    }); 
}); 

回答

0

嘗試改變這一點:

change: function (event, ui) { 

這樣:

input: function (event, ui) { 

或者你可以用這個嘗試:

$(element).autocomplete({ 
     minLength: 2, 
     //all your code but not change: function 
}).on('input', function(e){ 
    alert('changed'); 
    if (this.value.length <== 0) {      
     alert('no value'); /* IS FIRED */ 
    } else { 
     alert(this.value); 
    } 
}); 
+0

你好,感謝對你有所幫助,但仍然沒有解決的主要問題。問題是,當用戶重新輸入時,我失去了ui元素,因爲選中的元素已經被觸發,所以這是我得到的最後一個id和名稱,儘管用戶更改了名稱。有沒有辦法重新輸入源,然後用戶更改輸入? – eyalewin