7

您好我正在尝试根据输入将选项附加到选择标签。但选项没有附加。我什至没有收到错误,所以无法理解的错误在哪里。

HTML

  <div class="col-lg-5">
      <div class="input-group">
          <label>Select type of Graph</label>    
          <select data-placeholder="Select Field..." id="graph_name" style="width:300px;" name="team_name" class="chosen-select" tabindex="2">

          </select>
      </div>
  </div>

jQuery:

$('#field_name').change(function() {
  var fieldname = $('#field_name option:selected').val();
  $.post('<?php echo BASE_URL . 'php/processing/formDashboard/graph/showPossibleGraphs.php?id=' . $_GET['id']; ?>', {fieldname: fieldname}, function(data) {
    $.each(data.graphs, function(index, value) {
      $.each(value, function(index, value) {
        console.log(value.id);
        console.log(value.text);
        var option = '<option value="'+value.id+'">'+value.text+'</option>';
        $('#graph_name').append(option);
      });
    });
  });
});

这是屏幕截图 这是当我从一个下拉列表中选择选项并且数据来自 JSON 格式的脚本时的图像

这是当我从一个下拉列表中选择选项并且数据来自 JSON 格式的脚本时的图像

这是萤火虫调试屏幕截图,显示数据正在附加,但点击时它什么也没显示

这是萤火虫调试屏幕截图,显示正在附加数据,但单击时它什么也没有显示我的示例数据是这样的:

sample data: {
  "status":"OK",
  "response":200,
  "graphs":[[
    {"id":"B","text":"Bar Chart"},
    {"id":"D","text":"Doughnut Chart"},
    {"id":"P","text":"Pie Chart"}
  ]]
}
4

2 回答 2

7

基于聊天编辑

由于您正在动态形成select,因此您必须触发所选插件。

 $('#graph_name').trigger("chosen:updated");

在附加选项后添加它。它会工作

演示

您正在尝试直接附加字符串。但是您必须附加 DOM 元素。

  var option = '<option value="'+value.id+'">'+value.text+'</option>';
  $('#graph_name').append(option);

一定是

  var option = $('<option value="'+value.id+'">'+value.text+'</option>');
  $('#graph_name').append(option);

更好的是,而不是每次迭代都附加到 DOM 树。加载它一个数组,然后将 html() 设置在select. 它将提高性能。

于 2015-04-18T07:10:59.077 回答
2

另一种选择是:

$.each(selectValues, function(key, value) {   
     $('#graph_name')
         .append($("<option></option>")
         .attr("value",key)
         .text(value)); 
});
于 2015-04-18T07:13:57.443 回答