2013-08-21 216 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); 
    });