jQuery .change() with ajax requires refresh for comboboxes -
so code have seems correct; however, comboboxes change after refresh page; not anticipated $.change().
prior current code had 2 separate ajax calls. 1 clear checkboxes, , other set them. worked without page refresh; however, check incorrect boxes (or not check correct ones).
i've checked returns php through firebug , results anticipated.
the code jquery v1.5.1 because i'm using jquery ui.
thanks in advance!
php
<?php require 'config.php'; if(!empty($_get['usr'])) { //retrieve committee banks list $db->query('select * clas_gov_app_meeting_access_list usr="committeebank"'); $committeebank = $db->get(); //retrieve selected users permissions $db->query('select * clas_gov_app_meeting_access_list usr="'. $_get['usr'].'"'); $accesslist = $db->get(); //echo user permissions echo $accesslist[0]['isadmin']; //combine committebank's , users permissions sepereated slash $accesslist[0]['accessto'] = $committeebank[0]['accessto'] .',/,' . $accesslist[0]['accessto']; //explode on commas $accesslist = explode(',',$accesslist[0]['accessto']); //echo each value foreach($accesslist $key => $value) { echo $value.' '; } }
?>
javascript / jquery
<script type="text/javascript"> function setcheckboxes() { var usr = $('#kuoid2').find('option:selected').val(); $.ajax({ url : 'ajaxloadaccess.php?usr=' + usr, datatype : "text", success : function(response) { //first char echoed single identifier admin status var isadmin = response.charat(1); //clear string response = response.replace(response.charat(1), ''); //committebank first, , seperated usr slash split_response = response.split("/"); //want clear checkboxes committebank , set usr clearcheckboxes = split_response[0].split(" "); setcheckboxes = split_response[1].split(" "); //clear checkboxes //for each value in array for(var in clearcheckboxes) { //skipping on empty checkboxes if(clearcheckboxes[i] != '') { //check boxes need if($('input[name='+clearcheckboxes[i]+'2]').attr('checked')) { $('input[name='+clearcheckboxes[i]+'2]').attr('checked', false); } } } clearcheckboxes = []; //set checkboxes //for each value in array for(var in setcheckboxes) { //skipping on empty checkboxes if(setcheckboxes[i] != '') { //check boxes need $('input[name='+setcheckboxes[i]+'2]').attr('checked', true); } } setcheckboxes = []; if(isadmin>0) { $('input[name=isadmin2]').attr('checked', true); } else { $('input[name=isadmin2]').attr('checked', false); } } }); } $(document).ready(function() { $(function() { $( "#tabs" ).tabs(); }); setcheckboxes(); $("select").change(function() { setcheckboxes(); }); }); </script>
the highlighted lines culprits in code. using setcheckboxes variable in same function , not using var declare it. please use below code hope works you.
<script type="text/javascript"> function setcheckboxes() { var usr = $('#kuoid2').find('option:selected').val(); $.ajax({ url : 'ajaxloadaccess.php?usr=' + usr, datatype : "text", success : function(response) { //first char echoed single identifier admin status var isadmin = response.charat(1); //clear string response = response.replace(response.charat(1), ''); //committebank first, , seperated usr slash split_response = response.split("/"); //want clear checkboxes committebank , set usr **var clearcheckboxes = split_response[0].split(" "); var setcheckboxes = split_response[1].split(" ");//you should use var declare js variables otherwise in global scope.** //clear checkboxes //for each value in array for(var in clearcheckboxes) { //skipping on empty checkboxes if(clearcheckboxes[i] != '') { //check boxes need if($('input[name='+clearcheckboxes[i]+'2]').attr('checked')) { $('input[name='+clearcheckboxes[i]+'2]').attr('checked', false); } } } clearcheckboxes = []; //set checkboxes //for each value in array for(var in setcheckboxes) { //skipping on empty checkboxes if(setcheckboxes[i] != '') { //check boxes need $('input[name='+setcheckboxes[i]+'2]').attr('checked', true); } } setcheckboxes = []; if(isadmin>0) { $('input[name=isadmin2]').attr('checked', true); } else { $('input[name=isadmin2]').attr('checked', false); } } }); } $(document).ready(function() { $(function() { $( "#tabs" ).tabs(); }); setcheckboxes(); $("select").change(function() { setcheckboxes(); }); }); </script>
Comments
Post a Comment