Связанные / сцепленные выпадающие списки MagicSuggest?
Я пытаюсь создать набор связанных / связанных цепочек множественного выбора, используя MagicSuggest и PHP-запрос. Итак, сначала я создаю окно MagicSuggest с функцией для изменения ms1:
$(document).ready(function() {
var ms1 = $('#ms1').magicSuggest({
data: 'datams1.php',
displayField: 'name' });
$(ms1).on('selectionchange', function(event, combo, selection){
run(selection);});
});
Затем я создаю новое окно MagicSuggest, запустив php-запрос, который возвращает объект json:
function run(country) {
$.getJSON("query.php", { id: country[0].id}, callbackFuncWithData );
}
function callbackFuncWithData(region) {
var ms2 = $('#ms2').magicSuggest({
data: region,
displayField: 'name'
});
}
Это работает, когда я делаю первоначальный выбор, но не обновляется, если я изменяю выбор. Я проверил, и в рамках "callbackFuncWithData" я создаю обновленный объект "регион" json. Так что, может быть, мне нужно обновить / перезагрузить мой объект # ms2.
Мои вопросы:
- Есть ли способ принудительно обновить данные MagicSuggest?
- Существует ли лучший / более чистый / более эффективный способ использования результатов одного блока MagicSuggest для запроса и возврата данных для второго связанного блока MagicSuggest?
Спасибо!
2 ответа
- используйте метод setData() для динамической установки данных при необходимости.
- вы всегда можете использовать библиотеку, например angular, чтобы связать свойства компонента вместе.
Этот код создает две связанные комбинации с одинаковыми данными, но одна из них показывает поле "имя", а другая показывает поле "имя1".
function reflectSelection(ms1, ms2){
var val = parseInt(ms1.getValue());
var val1 = parseInt(ms2.getValue());
if(!isNaN(val)){
if(val != val1){
ms2.clear(true);
ms2.setSelection(ms1.getSelection());
}
}
else
{
ms2.clear(true);
}
}
var msName = $('#ms-onselectionchange').magicSuggest({
maxSelectionRenderer: function(){ return ''; },
useTabKey: true,
noSuggestionText: '',
strictSuggest: true,
maxSelection: 1,
allowFreeEntries: false,
placeholder : '',
data: [{'id':0, 'name':'Paris', 'name1':'Paris5'}, {'id':1, 'name':'New York', 'name1':'New York5'}],
});
var msName1 = $('#ms-onselectionchange1').magicSuggest({
maxSelectionRenderer: function(){ return ''; },
useTabKey: true,
noSuggestionText: '',
displayField: 'name1',
strictSuggest: true,
maxSelection: 1,
allowFreeEntries: false,
placeholder : '',
data: [{'id':0, 'name':'Paris', 'name1':'Paris5'}, {'id':1, 'name':'New York', 'name1':'New York5'}],
});
$(msName).on('selectionchange', function(e,m){
reflectSelection(msName, msName1);
});
$(msName1).on('selectionchange', function(e,m){
reflectSelection(msName1, msName);
});