2013-08-21 173 views
0

我正在尝试使用MagicSuggest和php查询构建一组链接/链接的多选框。所以,首先我建立一个MagicSuggest盒功能时MS1更改为:链接/链接MagicSuggest下拉菜单?

$(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对象。

我的问题是:

  1. 有没有办法迫使MagicSuggest数据的刷新?
  2. 是否有更好/更清洁/更高效的方式来使用一个MagicSuggest框的结果来查询并返回第二个链接的MagicSuggest框的数据?

谢谢!

回答

0
  1. 使用setData()方法在需要时动态设置数据。
  2. 您始终可以使用类似angular的库来将组件属性绑定在一起。
0

此代码使2个链接的组合具有相同的数据,但其中一个显示“名称”字段,另一个显示“名称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); 
    });