Layui实现input输入和选择的方法


本文摘自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) {   //选择移交单位 赋值给input框

                $("#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标签中,如图。

1.jpg

然后我们获取到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》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...