php - How to reset chosen class li elements using jquery/javascript -
i need help. need reset li elements again auto created chosen-select jquery plug-in.
<link href="css/chosen.css" rel="stylesheet"> <script type="text/javascript" src="js/chosen.jquery.js"></script> <div class="popover-content"> <p> <select class="chosen-select text-left" style="width:100%;" onchange="setcountry();" id="conid"> <option value="" selected>select country</option> <?php foreach ($country $v) { ?> <option value="<?php echo $v['country_id']; ?>"><?php echo $v['country_name']; ?></option> <?php } ?> </select> </p> </div> <div id="popupcity" class="popover" style="width:270px"> <div class="arrow"></div> <h3 class="popover-title">select city</h3> <div class="popover-content" id="ctchoosen"> <p> <select class="text-left" style="width:100%;" id="ctid" onchange="setcity();"> <option value="" selected>select city</option> </select> </p> </div> </div> when user selects country, city values added city select list.
function setcountry(){ var conval=document.getelementbyid('conid'); var selectval=''; if (conval.selectedindex == -1){ return null; }else{ selectval=conval.options[conval.selectedindex].text; $("#popupcountry").removeclass("in"); } document.getelementbyid('bindcon').innerhtml=selectval; $('#bordercon').css('border', ''); //console.log('contr',conval.options[conval.selectedindex].value); var url="common.php?action=getcity"; $.post(url,{"con_data":conval.options[conval.selectedindex].value},function(data){ var obj=json.parse(data); console.log('data1',obj); var ctdata=''; $('#ctid').find('option').not(':first').remove(); $('#ctid').removeclass('chosen-select'); $('.chosen-select').chosen(); if(obj.isdata==1){ ctdata=obj.cid; $.each(ctdata, function(idx, o) { $("#ctid").append("<option value="+o.city_id+">"+o.city_name+"</option>"); //$("#ctchoosen > ul").append('<li class="active-result" data-option-array-index='+this.city_id+'>'+this.city_name+'</li>'); }) $('#ctid').addclass('chosen-select'); $('.chosen-select').chosen(); } }) } when user selects option in country select list, cities appending , need cities in select box/auto created list item elements update.
i can reset select box unable reset auto created list item elements when user selecting new country cities belongs not displaying user. using php database operations.
chosen offers event can triggered. the documentation:
updating chosen dynamically
if need update options in select field , want chosen pick changes, you'll need trigger "chosen:updated" event on field. chosen re-build based on updated content.
$("#form_field").trigger("chosen:updated");
when city list has options, instead of calling
$('.chosen-select').chosen(); after adding cities, trigger updated event on it:
$('#ctid').trigger("chosen:updated"); see demonstration of below.
//track whether options have been added list var cityoptionsadded = false; function setcountry() { var conval = document.getelementbyid('conid'); var selectval = ''; if (conval.selectedindex == -1) { return null; } else { selectval = conval.options[conval.selectedindex].text; $("#popupcountry").removeclass("in"); } $('#bordercon').css('border', ''); var url = conval.options[conval.selectedindex].value + ".json"; $.post(url, function(obj) { var ctdata = ''; $('#ctid').find('option').not(':first').remove(); $('#ctid').removeclass('chosen-select'); chosenselect = $('.chosen-select').chosen(); if (obj.isdata == 1) { ctdata = obj.cid; $.each(ctdata, function(idx, o) { $("#ctid").append("<option value=" + o.city_id + ">" + o.city_name + "</option>"); }); if (cityoptionsadded) { //subsequent addition of cities list $('#ctid').trigger("chosen:updated"); } else { //first time adding cities list cityoptionsadded = true; $('#ctid').addclass('chosen-select'); chosenselect = $('.chosen-select').chosen(); } } }); } /**override jquery ajax sandbox because real ajax requests disabled in environment */ $.post = function(url, callback) { var data; if ($('#conid').val() == 'ca') { data = { "isdata": true, "cid": [{ "city_id": "ot", "city_name": "ottowa" }, { "city_id": "va", "city_name": "vancouver" }] }; } if ($('#conid').val() == 'se') { data = { "isdata": true, "cid": [{ "city_id": "st", "city_name": "stockholm" }, { "city_id": "lu", "city_name": "lund" }] }; } callback(data); } <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/chosen/1.7.0/chosen.jquery.min.js"></script> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/chosen/1.7.0/chosen.min.css" /> <div class="popover-content"> <p> <select class="chosen-select text-left" style="width:100%;" onchange="setcountry()" id="conid"> <option value="" selected>select country</option> <option value="ca">canada</option> <option value="se">sweden</option> </select> </p> </div> <div id="popupcity" class="popover" style="width:270px"> <div class="arrow"></div> <h3 class="popover-title">select city</h3> <div class="popover-content" id="ctchoosen"> <p> <select class="text-left" style="width:100%;" id="ctid"> <option value="" selected>select city</option> </select> </p> </div> </div>
Comments
Post a Comment