2011-07-16 91 views

回答

26

這就是jquery ui自動完成如何在您同時提供標籤和值的情況下工作。如果您要將標籤返回到搜索字段,請重命名值字段。

更新小提琴:http://jsfiddle.net/jensbits/bM7ck/3/

+0

+1:這是去如果OP可以改變數據的一種方法。 –

+0

謝謝,謝謝謝謝! 一個簡單的修復,它的工作原理。 – chrisk

+1

不客氣。我撞到你了,所以你應該能夠給Andrew一個+1的焦點建議。團隊努力。 –

17

你接近,你只需要:

  1. 添加return falseselect事件處理程序的結束,
  2. 添加事件處理程序focus事件,以便您可以覆蓋它,使用標籤而不是值。

這是你的代碼更新:

$("#search").catcomplete({ 
    delay: 0, 
    source: data, 
    select: function(event, ui) { 
     $('#search').val(ui.item.label); 
     $('#searchval').val(ui.item.value); 
     return false; // Prevent the widget from inserting the value. 
    }, 
    focus: function(event, ui) { 
     $("#search").val(ui.item.label); 
     return false; // Prevent the widget from inserting the value. 
    } 
}); 

下面是一個更新的例子:http://jsfiddle.net/q2kDU/

+0

我已經與仁的修復,但已添加您的重點建議。 謝謝你的幫助。 – chrisk

+0

@ chrisk:沒問題。仁的修復是一個好方法。 –

2
$(function() { 
     $("#searchitems").autocomplete({ 
      source: [<?php echo $search /*example for full list in php*/?>], 
      minLength: 2, 
      select: function(event, ui) { 
       event.preventDefault(); 
       $("#searchitems").val(ui.item.label); 
       $('#searchitemvalue').val(ui.item.value); 
       window.location="#"; //location to go when you select an item 
      }, 
      focus: function(event, ui) { 
       event.preventDefault(); 
       $("#searchitems").val(ui.item.label); 
       $('#searchitemsvalue').val(ui.item.value); 
      } 
     }); 
    }); 
+1

這裏有一些解釋會很好 –