javascript - 如何避免选择框上的ajax结果

标签 javascript jquery html ajax

screen1

正如您在上面的示例中一样,我有占位符(没有值的选项)来表示例如。 选择子类别,但只要我更改我的类别值,子类别的结果就会显示。

我想要的是当我在子类别下拉列表中选择类别时仍然显示 Select Subcategory 但在该类别下加载所选类别的结果。简单来说:

Instead of showing results directly, shows placeholder option and results be under it.

这是我的代码:

// HTML
<label for="specification_id">specifications</label>
  <select name="specification_id" class="form-control">
    <option value="">Select Specification</option>
  </select>

// JAVASCRIPT

<script type="text/javascript">
  $(document).ready(function() {
    $('select[name="subcategory_id"]').on('change', function() {
      var subcategoryID = $(this).val();
      if(subcategoryID) {
      $.ajax({
        url: '{{ url('getspecifications') }}/'+encodeURI(subcategoryID),
        type: "GET",
        dataType: "json",
        success:function(data) {
        $('select[name="specification_id"]').empty();
        $.each(data, function(key, value) {
            $('select[name="specification_id"]').append(
                  "<option class='form-control' value='"+ value['id'] +"'>"+ value['title'] +"</option>"
                  );
            });
        }
      });
      }else{
        $('select[name="specification_id"]').empty();
      }
    });
  });
</script>

最佳答案

清空项目后,确保将空白占位符追加回其中:

else{
    $('select[name="specification_id"]').empty().append("<option value='' selected>Select Specification</option>");
  }

或者在一开始清除选择时跳过它:

else{
    $('select[name="specification_id"]').not(':first').remove();
  }

我忘记了 success: 函数中的 empty():

success:function(data) {
$('select[name="specification_id"]').not(':first').remove();
//...

或:

success:function(data) {
$('select[name="specification_id"]').empty().append("<option value='' selected>Select Specification</option>");
//...

关于javascript - 如何避免选择框上的ajax结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48650245/

相关文章:

javascript - 在异步循环后写入控制台

javascript - jQuery:悬停时的淡入/淡出 - 移动设备上的替代方案?

javascript - 如果 div id 有 $,Jquery 不工作

php - jQuery 循环在值 < 4 后继续,在 For 循环中从 1 重新开始

android - 如何在android单个Textview上显示html内容文本之间的水平线?

javascript - Phonegap应用程序与php服务器通信而不使用ip地址

javascript - Aurelia 自定义元素数据绑定(bind)

javascript - Bootstrap 选择元素未使用 React-router 渲染

javascript - 如何阻止我的汉堡包图标保留在顶部栏上,以便它与侧面菜单一起显示?

javascript - 限制文本字段中的整数