采用layui的美化时保留select里面的change事件

采用layui的美化时保留select里面的change事件

在前端开发过程中,select元素是经常用到的一个表单元素,但是默认的select样式比较丑陋,为了美化界面,很多人会使用第三方库来美化select,其中layui是比较常用的框架之一。然而,在使用layui美化select的时候,原生的change事件会失效,本文将介绍在保留layui美化效果的同时如何绑定change事件。

一、layui美化select的方法

要使用layui美化select,需要先引入layui框架,在页面中加入以下代码:

<link rel="stylesheet" href="https://cdn.staticfile.org/layui/2.5.6/css/layui.min.css">

<script src="https://cdn.staticfile.org/layui/2.5.6/layui.min.js"></script>

然后,在页面中使用select元素,并添加lay-filter属性和class属性,其中lay-filter属性用于绑定事件,class属性用于设置样式。例如:

<select name="city" lay-filter="selectDemo" class="layui-select">

<option value="0">请选择</option>

<option value="bj">北京</option>

<option value="sh">上海</option>

<option value="gz">广州</option>

</select>

这样,就可以实现基本的美化效果。具体样式可以参考layui的官方文档。

二、layui美化select时change事件的失效

在使用layui美化select后,原生的change事件会失效,换句话说,无法监听到select元素的值变化。

例如,以下代码:

<select name="city" lay-filter="selectDemo" class="layui-select">

<option value="0">请选择</option>

<option value="bj">北京</option>

<option value="sh">上海</option>

<option value="gz">广州</option>

</select>

<script>

$('select[name="city"]').change(function(){

var selected = $(this).val();

console.log(selected);

});

</script>

当选择了不同的选项时,控制台没有输出任何内容,说明change事件没有被触发。

三、保留layui美化select的同时绑定change事件

要在layui美化select的基础上绑定change事件,需要使用layui的form模块提供的on方法。该方法可以监听到layui美化select的值变化,并触发回调函数。

例如,以下代码:

<select name="city" lay-filter="selectDemo" class="layui-select">

<option value="0">请选择</option>

<option value="bj">北京</option>

<option value="sh">上海</option>

<option value="gz">广州</option>

</select>

<script>

layui.use(['form'], function(){

var form = layui.form;

form.on('select(selectDemo)', function(data){

var selected = data.value;

console.log(selected);

});

});

</script>

这里先使用layui模块化技术引入form模块,然后调用form.on方法,传入两个参数:第一个参数是lay-filter的值,也就是要绑定事件的select元素,第二个参数是回调函数,当select的值发生变化时会触发这个回调函数。

这样就可以在保留layui美化select的同时,绑定成功change事件了。

四、实现change事件的效果

在绑定change事件后,需要根据select元素的值做出相应的操作。以下是一个简单的例子:

<select name="city" lay-filter="selectDemo" class="layui-select">

<option value="0">请选择</option>

<option value="bj">北京</option>

<option value="sh">上海</option>

<option value="gz">广州</option>

</select>

<script>

layui.use(['form'], function(){

var form = layui.form;

form.on('select(selectDemo)', function(data){

var selected = data.value;

if(selected == 'bj'){

$('body').css('background-color', 'red');

} else if(selected == 'sh'){

$('body').css('background-color', 'green');

} else if(selected == 'gz'){

$('body').css('background-color', 'blue');

} else {

$('body').css('background-color', '#fff');

}

});

});

</script>

这里当选择北京、上海、广州时分别将body元素的背景色改为红色、绿色、蓝色,其他选项背景色为白色。

五、总结

通过本文的介绍,我们了解到如何使用layui美化select,并保留change事件的功能,这对于前端开发来说是非常有用的。同时,通过绑定change事件的例子,我们也可以看出如何根据select元素的值做出相应的操作,这在开发中也是非常常见的需求。