2016-11-04 47 views
1

以前的答案中提供的所有其他類似的相關解決方案都不適合我,所以請您協助?選擇集遠程數據填充的默認值

簡單地說:

創建頁面:從下拉菜單中選擇選項。該ID保存到DB

編輯頁:

$("#vehicle_id").selectize({ 
    valueField: "id", 
    labelField: "vehicle_model", 
    searchField: "vehicle_model", 
    options: [], 
    create: false, 
    render: { 
     option: function(item, escape) { 
      return "<div>" + 
         "<span class=title>" + 
          "<span class=renderline1><b>" + escape(item.vehicle_model) + "</b></span>" + 
          "<span class=renderline2>" + escape(item.vehicle_derivative) + "</span>" + 
         "</span>" + 
        "</div>"; 
     } 
    }, 
    load: function(query, callback) { 
     if (!query.length) return callback(); 
     $.ajax({ 
      url: "ajax.php", 
      type: "post", 
      dataType: "json", 
      data: { 
       a: "search", 
       term: query 
      }, 
      error: function() { 
       callback(); 
      }, 
      success: function(res) { 
       callback(res); 
      } 
     }); 
    } 
}); 

$("#vehicle_id")[0].selectize.setValue(165); 

ajax.php返回:

[{"id":"165","vehicle_model":"KIA","vehicle_derivative":"Cerato"},{"id":"786","vehicle_model":"KIA","vehicle_derivative":"Rio"}] 

問題下拉必須使用ID從DB

代碼默認選項1: 爲什麼setValue不起作用?我明白,這填充基於遠程數據的選項。所以當然,setValue不起作用,因爲在頁面加載時,沒有選項可供選擇。那麼我需要首先添加選項嗎?但是,這不會與從Ajax返回的實際選項混亂?這是非常混亂:/

問題2: 你會注意到JSON回報每輛車,ID,型號,衍生3項。 選擇某個項目時,如何將labelField設置爲以與渲染相同的方式顯示模型/衍生物。

+0

沒有答案:((( – Mark

回答

0

答1:我想你應該只設置值,當你有一些選擇。您可以在從服務器返回一些選項後設置值。

答2:在render對象使用item功能,像你這樣做option

會是這樣的:

... 
render: { 
    option: function (item, escape) { ... }, 
    item: function (item, escape) { 
     return "<div>" + 
        "<span class=title>" + 
         "<span class=renderline1><b>" + escape(item.vehicle_model) + "</b></span>" + 
         "<span class=renderline2>" + escape(item.vehicle_derivative) + "</span>" + 
        "</span>" + 
       "</div>"; 
    } 
} 
+0

您好,非常感謝您的回答,我最終會選擇二,並已解決了我的問題。 – Mark