0

我正在尝试使用 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);});
});

然后我通过运行一个返回 json 对象的 php 查询来构建一个新的 MagicSuggest 框:

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 框的数据?

谢谢!

4

2 回答 2

0
  1. 需要时使用 setData() 方法动态设置数据。
  2. 您始终可以使用 angular 之类的库将组件属性绑定在一起。
于 2014-05-14T10:37:23.513 回答
0

此代码使用相同的数据创建了 2 个链接组合,但其中一个显示“name”字段,另一个显示“name1”字段。

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);
   });
于 2015-04-12T18:45:34.480 回答