首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >根据一个选择框中的选择填充另一个选择框- JQuery?

根据一个选择框中的选择填充另一个选择框- JQuery?
EN

Stack Overflow用户
提问于 2011-05-03 02:48:16
回答 2查看 53K关注 0票数 25

我正在尝试根据在第一个选择框中所做的选择填充一个选择框。我在网上看过,发现了很多关于硬编码选项的有用信息,但我需要我的选项来自查询(就像coldfusion中的cfquery )。我知道cfquery是服务器端的,所以我不能在我的jquery中包含它,但是还有其他选择吗?

我使用了以下示例:

HTML:

代码语言:javascript
复制
<select id="counties">
    <option> </option>
    <option> somerset </option>
    <option> hertfordshire </option>
</select>

<select id="towns" disabled="true">
</select>

JS:

代码语言:javascript
复制
var countyTowns = [
    ["Bath", "Bristol"],
    ["Letchworth", "Hitchin"]
];

$("#counties").change(function() {
    var county = this.selectedIndex - 1;
    $("#towns").empty();
    if (county === -1) {
        $("#towns").attr("disabled", true);
    } else {
        var towns = countyTowns[county];
        for (var i = 0; i < towns.length; i++) {
            $("#towns").append($("<option></option>").text(towns[i]));
        }
        $("#towns").attr("disabled", false);
    }
});

我需要的是城镇是动态的,并能够从数据库中读取。

任何帮助都是非常感谢的!

谢谢

EN

回答 2

Stack Overflow用户

发布于 2020-01-16 14:53:48

尝尝这个

代码语言:javascript
复制
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
 $("#counties").change(function() {
    if($(this).val()){
    $("#towns").attr('disabled',false);

   
  //var towns = countyTowns[county];
   // for (var i = 0; i < towns.length; i++) {
      //  $("#towns").append($("<option></option>").text(towns[i]));
   // }


      optionText = 'Premium'; 
      optionValue = 'premium'; 
  
      $('#towns').append('<option value="${optionValue}"> 
                                       ${optionText} 
                                  </option>'); 
    }
    else {
     $("#towns").attr('disabled',true);
     $("#towns").empty();
          
        
    }
  });
});
</script>
</head>
<body>

<div id="div1"><h2>Let jQuery AJAX Change This Text</h2></div>
<select id="counties">
    <option> </option>
    <option> somerset </option>
    <option> hertfordshire </option>
</select>

<select id="towns" disabled="true">
</select>


</body>
</html>
票数 0
EN

Stack Overflow用户

发布于 2020-08-21 11:07:31

与使用AJAX调用收集的列表相比,使用编码到页面中的值列表既有好处,也有风险。

如果列表特别长,或者基于当前用户,AJAX调用是很好的。如果列表相对简单/较小,并且不太可能频繁更改,则硬编码列表可能是好的。

要使用硬编码列表,请使用以下代码:

代码语言:javascript
复制
var selectableValues = [
    {
    'title' : 'Words Starting With A' ,
    'values' : [
      'Apple' ,
      'Aardvark' ,
      'Alfalfa'
    ]
  } ,
  {
    'title' : 'Words Starting With B' ,
    'values' : [
      'Banana' ,
      'Beyond' ,
      'Belong'
    ]
  }
];

var $select_one = $select_two = false;

jQuery(function($){

  $select_one = $('#select_one');
  $select_two = $('#select_two');
  
    // Populate Select One
  $.each(selectableValues, function(k,v){
    $select_one.append('<option value="'+k+'">'+v.title+'</option>');
  });
  $('option:first',$select_one).text('Select...');
  $select_one.on('change',function(){
    populateSelectTwo(this.value);
  });

});

function populateSelectTwo( parentKey ){
  $('option',$select_two).remove();
  $select_two.append('<option value="">Select...</option>');
  $.each(selectableValues[parentKey].values, function(k,v){
    $select_two.append('<option value="'+k+'">'+v+'</option>');
  });
}

JSFiddle - https://jsfiddle.net/lucanos/8fy4m7vp/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5861090

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档