Laravel动态Select Box数据显示后立即消失的问题求助
问题原因与解决方法
1. 错误的Select内容更新逻辑
你的代码中先将目标select的内容替换成文本delegation_id,再追加选项,这会破坏select的结构,导致选项无法正常渲染,甚至引发页面异常。
修复代码:
将success回调里的这两行:
div.find('.name_fr').html("delegation_id"); div.find('.name_fr').append(op);
替换为:
div.find('.name_fr').html(op);
直接用生成的选项覆盖select的内容,保证select结构正确。
2. 页面意外刷新(表单自动提交)
如果.state_id所在元素在<form>标签内,部分场景下change事件会触发表单默认提交行为,导致页面刷新,刚加载的选项随即消失。
修复方法:
在change事件处理函数中阻止默认行为:
$(document).on('change','.state_id',function(e){ // 阻止默认行为,避免表单提交 e.preventDefault(); var state_id=$(this).val(); var div=$(this).parent(); var op=""; // 后续ajax代码不变... });
3. 额外检查项
- 确认
.name_fr是目标select元素的正确类名,避免和其他元素混淆 - 查看浏览器控制台是否有其他报错(比如元素找不到、ajax请求异常),排除潜在问题
修改后的完整Jquery代码:
@section('scripts') <script type="text/javascript"> $(document).ready(function(){ $(document).on('change','.state_id',function(e){ e.preventDefault(); var state_id=$(this).val(); var div=$(this).parent(); var op=""; $.ajax({ type:'get', url:'{!!URL::to('finddelegName')!!}', data:{'id':state_id}, success:function(data){ console.log('success'); console.log(data); console.log(data.length); op+='<option value="0" selected disabled>chose delegation</option>'; for(var i=0;i<data.length;i++){ op+='<option value="'+data[i].id+'">'+data[i].name_ar+'</option>'; } div.find('.name_fr').html(op); }, error:function(){ } }); }); }); </script> @endsection
内容的提问来源于stack exchange,提问作者yahya
相关产品推荐
相关产品推荐

