使用layui 表单select异步查询动态添加option元素无效或者事件第二次点击才生效

57 篇文章 1 订阅
50 篇文章 0 订阅

使用layui动态修改select中的option选项,一开始遇到select总是第二次变化才生效,几经周折,终于修改了一份较为适用的写法:

html页面:

<!--父级包裹器,定义id 等会儿用它来追加元素-->
<div class="layui-form-item" id="menu_parentid">
    <label class="layui-form-label"><span class="x-red">*</span>父级菜单<br/><span class="x-red">{if condition='($pid eq 0)'}一级菜单{else/}{$pname}{/if}</span></label>          
    <div class="layui-input-inline">                
        <select name="menu_parentid">               
             <option value="0">一级菜单</option>                       
        </select>
    </div>
    <div class="layui-input-inline">
        <!-- lay-filter="" 定义监听的元素 -->
        <select name="menu_parentid" lay-filter="menu_parentid2"> 
             {volist name='info' id="v1"}                    
             <option value="{$v1.menu_id}">{$v1.menu_name}</option>                
             {/volist}                   
        </select>
   </div>
   <div class="layui-input-inline" id='menu_parentid3'> <!--此选项即为要变化的选项-->
       <select name="menu_parentid">
            <option value=""></option>               
       </select>
   </div>              
</div>            

javascript如下:

layui.use(['layer','form'], function(){
    var layer = layui.layer,form = layui.form;    
    //监听select menu_parentid2 即为lay-filter 中的元素
    form.on('select(menu_parentid2)', function(data){ 
       $.post("{:url('Menu/editMenu')}",{menu_parentid:data.value,isAjax:'1',html:'yes'},function(res){
            if(res.status == 1){              
                var str = "<div class='layui-input-inline' id='menu_parentid3'><select name='menu_parentid'>";                     
                $.each(res.info,function(k,v){
                    str = str + "<option value='"+v['menu_id']+"'>"+v['menu_name']+"</option>";
                });
                str = str + "</select></div>";
                $('#menu_parentid3').remove(); //移除先前定义的元素                                 
                $('#menu_parentid').append(str); //追加
                form.render('select'); //重新渲染 这个一定要放在最后这个位置               
            }else{                    
                return false;  
            }
        },'json');  
    });
});

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值