Цель: Я хочу добавить функции setValue и getValue в виджет автозаполнения JQueryUI.Добавить setValue и getValue в JQueryUI Autocomplete
Предполагая, что список автозаполнения имеет источник данных пар идентификатор/метки, я хочу звонить в SetValue и GetValue, как это:
// this is how I *want* to call it
$("#tags").autocomplete('setValue', 2); // should select "two" in the list
$("#tags").autocomplete('getValue') // if "two" is selected, it should return 2
Вот контекст HTML:
<script>
// if I pass in 2 for the id, it should select "two"
function setValueClick(){
$("#tags").autocomplete('setValue', 2);
}
// if "two" is the selected item, getValue should return 2
function getValueClick(){
console.log($("#tags").autocomplete('getValue'));
}
</script>
<div class="ui-widget">
<label for="tags">Tags: </label>
<input id="tags" /> <br/>
<button onclick="setValueClick()">Set value to 2</button>
<button onclick="getValueClick()">Get value</button>
</div>
и JS:
$.widget("ui.autocomplete", $.ui.autocomplete, {
setValue: function(id) {
// TODO: make this select the item corresponding to the id param
},
getValue: function(){
// TODO: make this return the id of the selected item
}
});
$(function() {
var availableTags = [
{ id: 1,
label: 'one'
},
{
id: 2,
label: 'two'
},
{
id: 3,
label: 'three'
}
];
$("#tags").autocomplete({
source: availableTags
});
});
И вот jsf iddle start: http://jsfiddle.net/spencerw/55jhx/149/
благодаря , отлично! Единственное изменение, которое я могу сделать, это получить доступ к данным из исходного метода, поскольку я мог бы, например, заполнить функцию, например: var var = $ (this.element [0]). Autocomplete ("option" , "source"); 'и использовать это в' .each (tags, ...) '. Я сделал это изменение и несколько других второстепенных здесь: http://jsfiddle.net/spencerw/Lcw8r6yk/ – jbobbins
[закончилось редактирование первого комментария] @ mark.hch спасибо, это здорово! Так как я могу заполнить список из функции, например, единственным изменением, которое я могу сделать, является доступ к данным из исходного параметра, например: «var tags = $ (this.element [0]). Autocomplete (« option » "," source ");' и использовать это в foreach: '$ .each (tags, ...)'. Я сделал это изменение и несколько других второстепенных здесь: http://jsfiddle.net/spencerw/Lcw8r6yk/ – jbobbins