本文摘自PHP中文网,作者尚,侵删。

Layui实现input输入和选择的方法:
HTML代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 | <div class= "layui-col-md4" >
<label class= "layui-form-label" >移交单位<span style= "color:red" >*</span></label>
<div class= "layui-input-block" >
<input type= "text" name= "HandoverCompany" id= "HandoverCompany" class= "layui-input" style= "position:absolute;z-index:2;width:80%;" lay-verify= "required" value= "111" onkeyup= "search()" autocomplete= "off" >
<select type= "text" id= "hc_select" lay-filter= "hc_select" autocomplete= "off" placeholder= "移交单位全称" lay-verify= "required" class= "layui-select" lay-search>
<option value= "111" >111</option>
<option value= "222" >222</option>
<option value= "333" >333</option>
<option value= "444" >444</option>
<option value= "555" >555</option>
</select>
</div>
</div>
|
其中input的几个style样式简单说一下。
position:absolute 在这里是让input和select在同一位置。
z-index:2 是为了让input在select上面。
width:80% 是为了不盖住select后面的小三角符号,select还可以点击。
autocomplete="off" 为了不自动填充input框,免得压盖select选项
然后是JS代码。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | layui.use([ 'form' , 'layedit' , 'upload' ], function () {
var form = layui.form
form.on( 'select(hc_select)' , function (data) {
$( "#HandoverCompany" ).val(data.value);
$( "#hc_select" ).next().find( "dl" ).css({ "display" : "none" });
form.render();
});
window.search = function () {
var value = $( "#HandoverCompany" ).val();
$( "#hc_select" ).val(value);
form.render();
$( "#hc_select" ).next().find( "dl" ).css({ "display" : "block" });
var dl = $( "#hc_select" ).next().find( "dl" ).children();
var j = -1;
for ( var i = 0; i < dl.length; i++) {
if (dl[i].innerHTML.indexOf(value) <= -1) {
dl[i].style.display = "none" ;
j++;
}
if (j == dl.length-1) {
$( "#hc_select" ).next().find( "dl" ).css({ "display" : "none" });
}
}
}
});
|
简单说一下我的思路,首先select选择的值要能赋值给input框,可以就需要form.on('select(hc_select)'来监听select值的变化,选择了之后要把下拉列表给隐藏掉。同时重新渲染一下这个表单,只重新渲染当前的select也是可以的。
然后就是输入到input框里的文字如何去select中去搜索。首先我们通过检查select的dom结构可以发现,他里面的选项都是在dl下的dd标签中,如图。

然后我们获取到dl标签,然后通过循环的方式挨个去匹配dd中的选项与我们输入的文本是否存在关系。通过indexOf就行。如果不相似,则直接隐藏掉,然后这里为什么要定义一个j呢?
是因为如果都不匹配的话,下面还是会出来一个空的dl标签,页面显示就是一个空的小列表,有点影响美观,所以如果你输入的文本和下拉列表中的选项都没关系的话,直接把dl给隐藏了。这里我是判断不相似的个数如果和dl.length 相等的话,就说明你输入的文本和select的选项没一个相似的,然后就可以把dl隐藏了。
更多layui知识请关注PHP中文网的layui使用教程栏目。
以上就是Layui实现input输入和选择的方法的详细内容,更多文章请关注木庄网络博客!
相关阅读 >>
layui框架属于前端还是后端
改造传统jquery扩展为layui模块方法介绍
如何解决layui时间控件闪退问题
layui的upload组件使用和上传阻止
layui图片如何放大
layui后端怎么搭建
layui 怎么引用
layui中table数据表格隐藏列的方法介绍
layui事件监听使用
表格工具按钮列显示更多时也能触发table的事件
更多相关阅读请进入《layui》频道 >>
人民邮电出版社
本书对 Vue.js 3 技术细节的分析非常可靠,对于需要深入理解 Vue.js 3 的用户会有很大的帮助。——尤雨溪,Vue.js作者
转载请注明出处:木庄网络博客 » Layui实现input输入和选择的方法