【问题标题】:Dynamic Dependent Select from dropdown using Jquery and Ajax and json file使用 Jquery 和 Ajax 以及 json 文件从下拉列表中动态选择
【发布时间】:2019-12-05 13:50:19
【问题描述】:

我正在为下面的代码寻求帮助,

我有这个表格,每个下拉列表都依赖于它上面的那个,所以你根据你的选择,正确的数据将显示在下一个选择中。我想根据下拉列表 1 选择国家/地区激活下拉列表 4(选择房屋)。所以当国选时。 state(2) 和 house(4) 都将被激活并显示数据。请看下面的截图,

这里是 HTML 代码

$(document).ready(function(){

load_json_data('country');

function load_json_data(id, parent_id)
{
 var html_code = '';
 $.getJSON('https://raw.githubusercontent.com/ahammoudi/jason_data/master/data.jason', function(data){

  html_code += '<option value="">Select '+id+'</option>';
  $.each(data, function(key, value){
   if(id == 'country')
   {
    if(value.parent_id == '0')
    {
     html_code += '<option value="'+value.id+'">'+value.name+'</option>';
    }
   }
   else
   {
    if(value.parent_id == parent_id)
    {
     html_code += '<option value="'+value.id+'">'+value.name+'</option>';
    }
   }
  });
  $('#'+id).html(html_code);
 });

}

$(document).on('change', '#country', function(){
 var country_id = $(this).val();
 if(country_id != '')
 {
  load_json_data('state', country_id);
 }
 else
 {
  $('#state').html('<option value="">Select state</option>');
  $('#city').html('<option value="">Select city</option>');
  $('#house').html('<option value="">Select house</option>');
 }
});
$(document).on('change', '#state', function(){
 var state_id = $(this).val();
 if(state_id != '')
 {
  load_json_data('city', state_id);
 }
 else
 {
  $('#city').html('<option value="">Select city</option>');
 }
});

$(document).on('change', '#city', function(){
 var city_id = $(this).val();
 if(city_id != '')
 {
  load_json_data('house', city_id);
 }
 else
 {
  $('#house').html('<option value="">Select house</option>');
 }
});
});
<!DOCTYPE html>
<html>
 <head>
  <title>Webslesson Tutorial | JSON - Dynamic Dependent Dropdown List using Jquery and Ajax</title>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" />
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
 </head>
 <body>
  <script src="script.js"></script>
  <br /><br />
  <div class="container" style="width:600px;">
   <h2 align="center">JSON - Dynamic Dependent Dropdown List using Jquery and Ajax</h2><br /><br />
   <select name="country" id="country" class="form-control input-lg">
    <option value="">Select country</option>
   </select>
   <br />
   <select name="state" id="state" class="form-control input-lg">
    <option value="">Select state</option>
   </select>
   <br />
   <select name="city" id="city" class="form-control input-lg">
    <option value="">Select city</option>
   </select>
   <br />
   <select name="house" id="house" class="form-control input-lg">
    <option value="">Select house</option>
   <br />
 </div>
 </body>
</html>

【问题讨论】:

  • 以防万一有人想查看 json 数据文件,这里是 raw.githubusercontent.com/ahammoudi/jason_data/master/…
  • 你的问题是什么?
  • 下拉列表 4(选择房屋)需要在选择下拉列表 1(国家/地区)时处于活动状态。当前第 4 号将在选择下拉列表第 3 号(选择城市)时激活。如果你运行代码 sn-p 你会明白我在说什么。
  • 好的,根据我的理解,如果你选择第一个下拉菜单 4 个下拉菜单填充,让我知道是正确的,所以我正在准备演示?
  • 目前每个下拉菜单都依赖于它上面的一个,例如,下拉数字 2,直到您从下拉数字 1 中选择某些内容后才可用。而下拉数字 3 取决于数字 2。我想要的是,如果我更改此行 $(document).on('change', '#city', function () 到类似这样的 $(document).on('change', '#country', function(),下拉菜单将起作用,但列表不正确,因为我们将变量“city_id”设置为 (this)

标签: javascript jquery html ajax dropdown


【解决方案1】:

已修复。这就是我所做的>

$(document).ready(function(){

load_json_data('country');

function load_json_data(id, parent_id)
{
 var html_code = '';
 $.getJSON('https://raw.githubusercontent.com/ahammoudi/jason_data/master/data.jason', function(data){

  html_code += '<option value="">Select '+id+'</option>';
  $.each(data, function(key, value){
   if(id == 'country')
   {
    if(value.parent_id == '0')
    {
     html_code += '<option value="'+value.id+'">'+value.name+'</option>';
    }
   }
   else
   {
    if(value.parent_id == parent_id)
    {
     html_code += '<option value="'+value.id+'">'+value.name+'</option>';
    }
   }
  });
  $('#'+id).html(html_code);
 });

}

$(document).on('change', '#country', function(){
 var country_id = $(this).val();
 if(country_id != '')
 {
  load_json_data('state', country_id);
 }
 else
 {
  $('#state').html('<option value="">Select state</option>');
  $('#city').html('<option value="">Select city</option>');
  $('#house').html('<option value="">Select house</option>');
 }
});
$(document).on('change', '#state', function(){
 var state_id = $(this).val();
 if(state_id != '')
 {
  load_json_data('city', state_id);
 }
 else
 {
  $('#city').html('<option value="">Select city</option>');
 }
});

$(document).on('change', '#country', function(){
 var country_id = $(this).val();
 if(country_id == 1)
 {
  load_json_data('house', 7);
 }
 else if(country_id == 2)
 {
  load_json_data('house', 8);
 }
 else
 {
  $('#house').html('<option value="">Select house</option>');
 }
});
});
<!DOCTYPE html>
<html>
 <head>
  <title>Webslesson Tutorialx</title>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" />
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
 </head>
 <body>
  <script src="script.js"></script>
  <br /><br />
  <div class="container" style="width:600px;">
   <h2 align="center">JSON x</h2><br /><br />
   <select name="country" id="country" class="form-control input-lg">
    <option value="">Select country</option>
   </select>
   <br />
   <select name="state" id="state" class="form-control input-lg">
    <option value="">Select state</option>
   </select>
   <br />
   <select name="city" id="city" class="form-control input-lg">
    <option value="">Select city</option>
   </select>
   <br />
   <select name="house" id="house" class="form-control input-lg">
    <option value="">Select house</option>
   <br />
 </div>
 </body>
</html>

我只是把最后一个函数改成了

$(document).on('change', '#country', function(){
 var country_id = $(this).val();
 if(country_id == 1)
 {
  load_json_data('house', 7);
 }
 else if(country_id == 2)
 {
  load_json_data('house', 8);
 }
 else
 {
  $('#house').html('<option value="">Select house</option>');
 }
});

【讨论】:

    猜你喜欢
    • 2012-06-04
    • 2020-09-25
    • 1970-01-01
    • 2012-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-09
    相关资源
    最近更新 更多