搜索
首页web前端Layui教程layUI框架下带加减按钮的数字输入框

        layUI前端框架是现在比较流行的一款框架,其中内置的很多模块使用起来方便快捷,但是少数应用场景较少的模块没有内置其中,这个带加减按钮的数字输入框适用于购物或其他需要使用数字的场景。

        本扩展模块的UI风格完全基于layUI,可单独使用,也可扩展到layUI框架的扩展模块。

        思路:打开layUI的文档后,开头部分就写了支持扩展自定义模块,并且内置的其他模块也都可以使用。这样对于这个扩展来说就不需要从头写起了。在原本的输入框代码中加入两个按钮,然后给两个按钮绑定click事件,再判断每次点击后的值是否符合条件,这样加减输入框就完整了。

        原本的使用方法是通过元素ID再实例化参数来使用,但是考虑到一个页面可能会有多个输入框,每个都写一遍实例化代码会比较麻烦,所以将绑定过程内置到了方法里,实例化后一个页面的所有需要使用加减按钮的输入框都将渲染完成。

        效果图.png

                                            效果图

        使用方法:

        1.CSS部分 将这几行css代码放到公共样式文件

.plus-minus .layui-input-block{position: relative;}
.plus-minus input{position: absolute;top: 0px;left: 0px;text-align: center;}
.plus-minus button:nth-of-type(1){position: absolute;top: 0px;left: 0px;height: 100%;}
.plus-minus button:last-child{position: absolute;top: 0px;right: 0px;height: 100%;}

        2.HTML部分: 直接在layUI的form表单输入框代码块外套一层div,类名定义为“plus-minus”

            input标签增加data属性:

                    data-step——点击后增加减少的值,默认为1

                    data-maxvalue——最大值,默认为false,不限制最大值

                    data-minvalue——最小值,默认为false,不限制最小值

<div class="plus-minus">
    <div class="layui-form-item">
        <label class="layui-form-label">数量</label>
        <div class="layui-input-block">
            <input type="number" name="num" data-step="1" data-maxvalue="20" data-minvalue="1" lay-verify="required" autocomplete="off" class="layui-input num">
        </div>
    </div>
</div>

        3.JS部分:将以下js代码放到一个js文件中。

layui.define([&#39;layer&#39;], function(exports){
    var $ = layui.$
    var obj = {
        //数字加减函数(基本参数对象,最大值返回函数,最小值返回函数)
        plusminus : function (){
            $(".plus-minus").each(function(){
                //定义按钮HTML
                var plusminusbutton = &#39;<button type="button" class="layui-btn layui-btn-sm layui-btn-normal vk-minus"><i class="fa fa-minus"></i></button>&#39;
                                    +&#39;<button type="button" class="layui-btn layui-btn-sm layui-btn-normal vk-plus"><i class="fa fa-plus"></i></button>&#39;;
                var data = new Object;
                data.step = $(this).find(&#39;input&#39;).data(&#39;step&#39;);
                data.maxvalue = $(this).find(&#39;input&#39;).data(&#39;maxvalue&#39;);
                data.minvalue = $(this).find(&#39;input&#39;).data(&#39;minvalue&#39;);
				
                //定义默认参数,合并参数
                options = $.extend({
                    step: 1, //每次点击加减的值
                    maxvalue: false, //最大值,默认false,不限制
                    minvalue: false, //最小值,默认false,不限制
                },data);
		
                var elem = $(this).find(&#39;input&#39;),
                step = parseInt(options.step),
                maxvalue = options.maxvalue,
                minvalue = options.minvalue;
                //参数不规范则返回
                if(elem == null || elem == undefined){return};
                if(step == 0 || step == undefined){return};
                //加入按钮HTML
                $(elem).after(plusminusbutton);
				
                //点击增加
                $(elem).parent().on("click", ".vk-plus", function(){
                    var nowinput = $(this).siblings("input"), //当前输入框元素
                    nowbutton = $(this).siblings("button"), //当前按钮元素
                    oldval = $(nowinput).val(), //点击前的值
                    newval = parseInt(oldval) + step; //点击后的值
					
                    if(newval < maxvalue && newval > minvalue)
                    {
                        $(nowbutton).removeClass("layui-btn-disabled");
                    }
                    //判断条件。是否最大值
                    if(maxvalue == false)
                    {
                        $(nowinput).val(parseInt(oldval)+step);
                    }
                    if(maxvalue != 0 && newval < maxvalue)
                    {
                        $(nowinput).val(parseInt(oldval)+step);
                    }
                    if(maxvalue != 0 && newval >= maxvalue)
                    {
                        $(nowinput).val(maxvalue);
                        $(this).addClass("layui-btn-disabled");
                    }
                    //模拟change事件
                    $(nowinput).trigger(&#39;change&#39;);

                    return;
                });
                //点击减少(同上)
                $(elem).parent().on("click", ".vk-minus", function(){
                    var nowinput = $(this).siblings("input"),
                    nowbutton = $(this).siblings("button"), //当前按钮元素
                    oldval = $(elem).val(),
                    newval = parseInt(oldval) - step;
					
                    if(newval < maxvalue && newval > minvalue)
                    {
                        $(nowbutton).removeClass("layui-btn-disabled");
                    }
                    if(minvalue == false)
                    {
                        $(nowinput).val(parseInt(oldval)-step);
                    }
                    if(minvalue != 0 && newval > minvalue)
                    {
                        $(nowinput).val(parseInt(oldval)-step);
                    }
                    if(minvalue != 0 && newval <= minvalue)
                    {
                        $(nowinput).val(minvalue);
                        $(this).addClass("layui-btn-disabled");
                    }
                    //模拟change事件
                    $(nowinput).trigger(&#39;change&#39;);
                    
                    return;
                });
            });
        }
    };
    exports(&#39;common&#39;,obj);
});

        4.JS实例化使用

layui.extend({
    common: &#39;{/}/assets/js/common&#39;  //改为上方代码所在文件的路径
}).use([&#39;common&#39;], function(){
    var common = layui.common;
    common.plusminus();
})

        至此,数字加减模块已经完成。动态添加的元素如果想绑定,只需要在添加完以后再重新使用该方法即可,即common.plusminus()。

       总结: layUI经过这么多年已经发展的很完善,各个模块熟悉以后可以快速开发前端页面,又不需要写很多的js代码,对于非前端专业的开发人员来说可以设计出相对友好的页面。

        不论是前端还是后端,开发过程中都会遇到很多问题,具体的解决方法不是很重要,但是解决问题的思路一定要培养好。

        希望这篇文章可以帮助到更多的朋友。

以上是layUI框架下带加减按钮的数字输入框的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
如何使用Layui的流块模块进行无限滚动?如何使用Layui的流块模块进行无限滚动?Mar 18, 2025 pm 01:01 PM

文章讨论了使用Layui的流量模块进行无限滚动,涵盖设置,最佳实践,性能优化和自定义,以增强用户体验。

如何使用Layui的元素模块来创建选项卡,手风琴和进度条?如何使用Layui的元素模块来创建选项卡,手风琴和进度条?Mar 18, 2025 pm 01:00 PM

本文详细介绍了如何使用Layui的元素模块来创建和自定义UI元素,例如选项卡,手风琴和进度条,突出显示HTML结构,初始化和常见的陷阱,以避免。

如何自定义Layui旋转木制模块的外观和行为?如何自定义Layui旋转木制模块的外观和行为?Mar 18, 2025 pm 12:59 PM

本文讨论了自定义Layui的Carousel模块,重点介绍了外观和行为的CSS和JavaScript修改,包括过渡效果,自动播放设置以及添加自定义导航控件。

如何使用Layui的旋转木载模块来创建图像滑块?如何使用Layui的旋转木载模块来创建图像滑块?Mar 18, 2025 pm 12:58 PM

该文章指导使用Layui的Carousel模块用于图像滑块,详细介绍设置的步骤,自定义选项,实现自动播放和导航以及性能优化策略。

如何将Layui的上传模块配置为限制文件类型和尺寸?如何将Layui的上传模块配置为限制文件类型和尺寸?Mar 18, 2025 pm 12:57 PM

本文讨论了使用Accept,Exts和Size属性来限制Layui的上传模块,以限制文件类型和尺寸,并自定义错误消息以违反。

如何使用Layui的图层模块来创建模态窗口和对话框?如何使用Layui的图层模块来创建模态窗口和对话框?Mar 18, 2025 pm 12:46 PM

本文介绍了如何使用Layui的图层模块创建模态窗口和对话框,详细设置,类型,自定义和常见的陷阱要避免。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
4 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
4 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
4 周前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
1 个月前By尊渡假赌尊渡假赌尊渡假赌

热工具

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

WebStorm Mac版

WebStorm Mac版

好用的JavaScript开发工具