2016-11-04 48 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