Layui为select绑定change事件/Layui中select绑定change事件不生效

1、问题概述?

在使用jQuery的时候,我们可以通过如下方式为select下拉框绑定change事件,但是在layui中不生效。

所以经常有人发问:Layui中为select绑定change事件不生效。

$(function(){
  //通过id为select绑定change事件
  $("#selectId").bind("change",function(){

   });
});

因为Layui框架重写了这个功能,需要使用Layui的方式绑定change事件。

2、Layui为select绑定change事件方式如下

2.1、前端页面使用方式

注意点:需要使用到属性lay-filter="assetsystem",名字自定义

<div class="layui-form-item">
    <div class="layui-inline">
         <label class="layui-form-label">下拉框</label>
         <div class="layui-input-inline">
             <select lay-filter="assetsystem" name="assetsystem" id="assetsystem">
             </select>
          </div>
     </div>
</div>

2.2、为select绑定change事件

重点1:通过form.on为select绑定change事件

重点2:通过form.on中的data.value可以获取下拉框选中的值。

<script>
    layui.use(['layer','element','form','util','table','laydate'],function(){
      var element = layui.element;
      var table = layui.table;
      var form = layui.form;
      var util = layui.util;
      var $ = layui.$;

      //绑定规则使用到lay-filter
      form.on('select(assetsystem)', function(data){
        //data.value获取下拉框选中的值
        //也可以在change事件中使用异步请求等操作相关数据
        //如实现二级联动等。
        /*$.ajax({
            type: "get",
            url: "/path/youpath",
            cache: false,
            data:{"projectalias":data.value},
            dataType: "text",
            success:function(msg){
               
                form.render();
            }
        });*/
    });

    });
</script>
### Vue Select Change 事件不触发的原因分析 在 Vue 中,`<el-select>` 或 `<a-select>` 组件的 `change` 事件可能不会按预期触发,这通常由以下几个因素引起: - **组件初始化阶段**:如果数据绑定或初始渲染存在问题,可能会导致事件监听未能正确设置[^1]。 - **v-model 的使用不当**:当 `v-model` 和 `@change` 同时存在时,某些情况下可能导致行为异常。确保 `v-model` 所绑定的数据属性已正确定义并赋初值[^3]。 ### 解决方案 #### 方法一:确认 v-model 数据源正常工作 确保用于双向绑定的选择器模型具有默认值,并且该值存在于选项列表中。例如: ```javascript data() { return { level: '', // 确保此字段有合理的初始值 select: [ { value: 'option1', label: 'Option One' }, { value: 'option2', label: 'Option Two' } ] }; } ``` #### 方法二:调整事件监听方式 对于 Element UI 的 `<el-select>`,可以尝试移除 `v-model` 并改用 `.sync` 修改器来同步父级的状态变化;而对于 Ant Design Vue,则可以直接依赖于表单装饰器(`v-decorator`) 来管理状态更新[^2]。 #### 方法三:延迟加载选项 有时页面初次加载过快而使部分 DOM 尚未准备好就执行了操作,可以通过异步获取选项的方式来规避此类问题。比如通过 API 请求动态填充下拉菜单项。 #### 方法四:检查是否有其他插件干扰 如果有安装额外的库或者插件(如 Vuex),需排查这些工具是否会间接影响到原生事件机制的工作流程。 #### 示例代码 下面是一个基于上述建议修改后的例子,适用于 Element UI: ```html <!-- HTML --> <template> <div id="app"> <!-- 移除了 v-model, 改为手动控制 selectedValue 变量 --> <el-select :value="selectedValue" size="mini" placeholder="请选择" @change="handleSelectChange"> <el-option v-for="(item,index) in options" :key="index" :label="item.label" :value="item.value"></el-option> </el-select> </div> </template> <script> export default { name: 'App', data(){ return{ selectedValue:'', // 初始为空字符串或其他合理缺省值 options:[ {"value":"A","label":"Label A"}, {"value":"B","label":"Label B"} ] } }, methods:{ handleSelectChange(newValue){ console.log('Selected:', newValue); this.selectedValue = newValue; } } }; </script> ``` 以上方法可以帮助解决大多数场景下的 `change` 事件无法触发的问题。当然具体应用还需视实际情况灵活调整。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雾林小妖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值