2015-08-31 34 views
1

jQuery代碼:自動完成所選值 - jQuery的

var prefixes = [{ 
     "name": "Estonia", 
     "dial_code": "+372", 
     "code": "EE" 
     }, { 
     "name": "Latvia", 
     "dial_code": "+371", 
     "code": "LV" 
     }, { 
     "name": "Lithuania", 
     "dial_code": "+370", 
     "code": "LT" 
     }, { 
     "name": "Finland", 
     "dial_code": "+358", 
     "code": "FI" 
     }, { 
     "name": "Sweden", 
     "dial_code": "+46", 
     "code": "SE" 
     }]; 

     prefixes = $.map(prefixes, function(item, i) { 
     return { 
      label: item.name + " " + item.dial_code, 
      value: item.dial_code 
     }; 
     }); 

      $('.js-phone-prefix input').autocomplete({ 
      delay: 0, 
      minLength: 0, 
      source: prefixes, 
      appendTo: $('.js-phone-prefix') 
      }).focus(function() { 
      $(this).autocomplete('search', $(this).val()) 
      }).each(function() { 
      $(this).autocomplete("widget").addClass("phone-prefix"); 
      }); 

HTML代碼:

<div class="js-phone-prefix small" style="position: relative;"> 
    <input type="text" name="prefix" id="prefix" value=""> 
</div> 

什麼我想的是,當用戶選擇從列表中選擇一個我想要設置值作爲輸入值。例如,如果用戶選擇「愛沙尼亞」,則輸入值必須是+372。有什麼建議麼? link to fiddle

+0

對於我來說,似乎你希望它準確地工作。我點擊輸入,並顯示一個列表。我選擇「愛沙尼亞」,並得到+372。 – Anders

+0

是的,但價值不包含任何東西我不知道爲什麼 – fishera

+0

對我來說,價值包含正確的代碼:http://fiddle.jshell.net/6wc5r30h/ – Anders

回答

1

按照documentation,你有當您選擇自動完成選項綁定的事件。

$(".selector").autocomplete({ 
    select: function(e, ui) { 
    // Code will be placed here 
    } 
}); 

因此,在你的榜樣,你必須把它添加到上面的代碼:ui.item.value是你的價值的對象)。

select: function(e, ui) { 
    $(e.target).attr({'value' : ui.item.value}); 
} 

請參閱JSFIDDLE更新