2016-11-04 114 views
0

我关注此(http://www.jquery-az.com/boots/demo.php?ex=6.0_6)搜索框tut,但我的场景有点不同。我有国家,城市和位置动态填充,我希望我的搜索框主要位置。
由于位置动态填充,选项不会在搜索框中更新。 有没有什么办法,填充位置的选项后,我们触发刷新搜索框,以便它会拾取这些新生成的选项。
这里是我使用的HTML:动态填充搜索框中的选项(选择)引导jquery

<div class="col-md-6"> 
    <div class="form-group"> 
    <label class="control-label col-md-4">Countries<span></span></label> 
    <div class="col-md-8"> 
     <select class="form-control selectpicker chosen-select" name="country_id" id="country_id" data-show-subtext="true" data-live-search="true" required> 
      <option value="">Select</option> 
      <?php foreach ($countries as $key => $value) { ?> 
       <option value="<?php echo $value['id']; ?>"><?php echo $value['name_en']; ?> 
      </option> 
      <?php } ?> 
     </select> 
     <span class="help-block"></span> 
    </div> 
    </div> 
</div> 

这是城市选择字段

<div class="col-md-6"> 
    <div class="form-group"> 
    <label class="control-label col-md-4">Cities<span></span></label> 
    <div class="col-md-8"> 
     <select class="form-control" name="city_id" id="city_id" required> 
      <option value="">Select</option> 
     </select> 
     <span class="help-block"></span> 
    </div> 
    </div> 
    </div> 

此位置字段:

<div class="col-md-6"> 
    <div class="form-group"> 
    <label class="control-label col-md-4">Location<span class=""></span></label> 
     <div class="col-md-8"> 
     <div class="ui-widget"> 
     <?php echo form_error('location_id'); ?> 
     <select id="cars_location" value="<?php echo 
              set_select('location_id'); ?>" type="text" class="form-control selectpicker " multiple name="location_id" data-show-subtext="true" data-live-search="true" required> 
      <option value="">Select</option> 
      </select> 
     </div> 
     <div class="omitted_location"> 

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

现在,这些都是从那里Ajax调用我填写这些字段:

window.onload = function(){ 
     $("#country_id").change(function (e) { 
      var list = ''; 
      var country_id = $(this).val(); 
      var state = $.ajax({ 
      url: "<?php echo base_url()."Mrsaalaccess/get_record_by_id"; ?>", 


       type: "POST", 
       data: {id : country_id, get : "cities"}, 
       dataType: "text" 
      }); 

      state.done(function(msg) { 
       if(msg != 'error') 
       { 
        $("#city_id").html(msg); 
       } 
       else{ 
        $("#city_id").html(msg); 
       } 
      }); 


      state.fail(function(jqXHR, textStatus) { 
       console.log("Request failed: " + textStatus); 
      }); 
     }); 

     $("#city_id").change(function (e) { 
      var list = ''; 
      var city_id = $(this).val(); 
      var state = $.ajax({ 
       url: "<?php echo base_url()."Mrsaalaccess/get_location_by_id"; ?>", 
       type: "POST", 
       data: {id : city_id, get : "locations"}, 
       dataType: "text" 
      }); 


      state.done(function(msg) { 
       if(msg != 'error') 
       { 
        //Here i'm sending options to locations 
        //which isn't getting populated dynamically 
        $("#cars_location").html(msg); 
       } 
       else{ 
        $("#location_id").html(msg); 
       } 
      }); 

      state.fail(function(jqXHR, textStatus) { 

       console.log("Request failed: " + textStatus); 

      }); 
     }); 
    }; 

回答

2

当ajax调用成功,你得到新的<option> s为<select>你插入它的权利,但为了反映在你的情况是一个selectpicker引导小部件这些更新,你需要刷新它使用selectpicker('refresh')。所以of loaction ..

//Here i'm sending options to locations 
//which isn't getting populated dynamically 
$("#cars_location").html(msg); 
$('#cars_location').selectpicker('refresh'); // <-- add this 
相关问题