Строка JSON в паре ключ-значение автозаполнения

У меня есть строка JSON, как
{"Name1":"ID1","Name2":"ID2"} который я получил с помощью json_encode из PHP.
Как я могу иметь поле ввода с Name1, Name2 в опциях автозаполнения и один раз Name1 выбран, ID1 быть взятым в скрытом поле?
Я использую автозаполнение JQuery UI.

        var NameIDJsonString = <?php echo $NameIDJsonString; ?>;

$(function () {
$('#JSONName').autocomplete({

source: function (request, response) {
response($.map(NameIDJsonString, function (value, key) {
return {
label: key,
value: value
};
}));
},
select: function (event, ui) {
$("#JSONName").val(ui.item.text); // display the selected text
$("#JSONID").val(ui.item.value); // save selected id to hidden input
}
});
});
}

<html>
<body>
<input  id="JSONName" name="JSONName" size="30" class="ui-autocomplete-input" autocomplete="on" type="text" >
<input  id="JSONID" name="JSONID" size="30" class="ui-autocomplete-input" autocomplete="on" type="hidden" >

http://jsfiddle.net/mahesh1393/Aa5nK/4166/

0

Решение

                var source  = [ ];
var mapping = { };
for(var i = 0; i < NameIDJsonString.length; ++i) {
source.push(NameIDJsonString[i].Name);
mapping[NameIDJsonString[i].Name] = NameIDJsonString[i].ID;
}
$('#JSONName').autocomplete({
minLength: 1,
source: source,
select: function(event, ui) {
"use strict";
var summary=ui.item.value;
$("#JSONID").val(mapping[name]);
},
change: function( event, ui ) {
val = $(this).val();
exists = $.inArray(val,source);
if (exists<0) {
$(this).val("");
alert("Please enter a value from the list");
return false;
}
}
});

Я изменил мою строку JSON как каждый объект, как

{Name:"Name1",ID:"ID1"}
{Name:"Name2",ID:"ID2"}

и, следовательно, приведенный выше код должен помочь. Спасибо.:)

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]