三级联动相信大多数人都很好的实现过,今天我是小小的改动了下。当下拉列表里选择某一个地区时,相应的另外一个下拉列表先出现:Please Wait,0.5秒后再显示ajax获取的数据。这样用户体验稍微好一点。下面是我的js代码:
//Region&country $(‘#Article_code‘).change(function(){ var country=$(‘#Article_code option:selected‘).val(); var data={‘country‘:country}; var url=‘<?php echo Yii::app()->createUrl(‘Manage/article/getRegion‘); ?>‘; if(country==0) { $(‘#Article_region_id option‘).remove(); $(‘#Article_region_id‘).append($(‘<option value=0>Choose Region</option>‘)); return false; } $.ajax({ type:‘post‘, data:data, url:url, beforeSend:function(){ $(‘#Article_region_id option:first‘).text(‘Please Wait‘); }, success:function(json){ window.setTimeout(function(){ var data=eval(json); var str=‘‘; str+=‘<option value=0>Choose Region</option>‘; if(!data.empty){ for(var i=0;i<data.id.length;i++){ str+=‘<option value=‘+data.id[i]+‘>‘+data.name[i]+‘</option>‘; } } $(‘#Article_region_id option‘).remove(); $(‘#Article_region_id‘).append(str); },500); }, dataType:‘json‘ }); });
以上是代码,在ajax发送前,beforeSend里把第一个option里的内容修改为Please Wait,在success里调用window.setTimeout延迟0.5秒将数据显示到另一个下拉列表里。