layUI框架下帶加減按鈕的數字輸入框


1.CSS部分: 將這幾行css代碼放到公共樣式文件

1 .plus-minus .layui-input-block{position: relative;}
2 .plus-minus input{position: absolute;top: 0px;left: 0px;text-align: center;}
3 .plus-minus button:nth-of-type(1){position: absolute;top: 0px;left: 0px;height: 100%;}
4 .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,不限制最小值

 1 <div class="plus-minus">    
 2    <div class="layui-form-item">        
 3       <label class="layui-form-label">數量</label>        
 4       <div class="layui-input-block">            
 5          <input type="number" name="num" data-step="1" data- 
 6           maxvalue="20" data-minvalue="1" lay-verify="required" 
 7           autocomplete="off" class="layui-input num">        
 8      </div>    
 9    </div>
10 </div>

3.JS部分:將以下js代碼放到一個js文件中。

  1 layui.define(['layer'], function (exports) {
  2     var $ = layui.$
  3     var obj = {
  4         //數字加減函數(基本參數對象,最大值返回函數,最小值返回函數)
  5         plusminus: function () {
  6             $(".plus-minus").each(function () {
  7                 //定義按鈕HTML
  8                 var plusminusbutton = 'button type="button" class="layui-btn layui-btn-sm layui-btn-normal vk-minus"><i class="fa fa-minus"></i></button>' + '<button type="button" class="layui-btn layui-btn-sm layui-btn-normal vk-plus"><i class="fa fa-plus"></i></button>'
  9 
 10                 var data = new Object;
 11                 data.step = $(this).find('input').data('step');
 12                 data.maxvalue = $(this).find('input').data('maxvalue');
 13                 data.minvalue = $(this).find('input').data('minvalue');
 14 
 15                 //定義默認參數,合並參數
 16                 options = $.extend({
 17                     step: 1, //每次點擊加減的值
 18                     maxvalue: false, //最大值,默認false,不限制
 19                     minvalue: false, //最小值,默認false,不限制
 20                 }, data);
 21 
 22                 var elem = $(this).find('input'),
 23                     step = parseInt(options.step),
 24                     maxvalue = options.maxvalue,
 25                     minvalue = options.minvalue;
 26 
 27                 //參數不規范則返回
 28                 if (elem == null || elem == undefined) {
 29                     return
 30                 };
 31                 if (step == 0 || step == undefined) {
 32                     return
 33                 };
 34                 //加入按鈕HTML
 35                 $(elem).after(plusminusbutton);
 36 
 37                 //點擊增加
 38                 $(elem).parent().on("click", ".vk-plus", function () {
 39                     var nowinput = $(this).siblings("input"), //當前輸入框元素
 40                         nowbutton = $(this).siblings("button"), //當前按鈕元素
 41                         oldval = $(nowinput).val(), //點擊前的值
 42                         newval = parseInt(oldval) + step; //點擊后的值                    
 43 
 44                     if (newval < maxvalue && newval > minvalue) {
 45                         $(nowbutton).removeClass("layui-btn-disabled");
 46                     }
 47                     //判斷條件。是否最大值
 48                     if (maxvalue == false) {
 49                         $(nowinput).val(parseInt(oldval) + step);
 50                     }
 51 
 52                     if (maxvalue != 0 && newval < maxvalue) {
 53                         $(nowinput).val(parseInt(oldval) + step);
 54                     }
 55 
 56                     if (maxvalue != 0 && newval >= maxvalue) {
 57                         $(nowinput).val(maxvalue);
 58                         $(this).addClass("layui-btn-disabled");
 59                     }
 60 
 61                     //模擬change事件
 62                     $(nowinput).trigger('change');
 63 
 64                     return;
 65                 });
 66 
 67                 //點擊減少(同上)
 68                 $(elem).parent().on("click", ".vk-minus", function () {
 69                     var nowinput = $(this).siblings("input"),
 70                         nowbutton = $(this).siblings("button"), //當前按鈕元素
 71                         oldval = $(elem).val(),
 72                         newval = parseInt(oldval) - step;
 73 
 74                     if (newval < maxvalue && newval > minvalue) {
 75                         $(nowbutton).removeClass("layui-btn-disabled");
 76                     }
 77 
 78                     if (minvalue == false) {
 79                         $(nowinput).val(parseInt(oldval) - step);
 80                     }
 81 
 82                     if (minvalue != 0 && newval > minvalue) {
 83                         $(nowinput).val(parseInt(oldval) - step);
 84                     }
 85 
 86                     if (minvalue != 0 && newval <= minvalue) {
 87                         $(nowinput).val(minvalue);
 88                         $(this).addClass("layui-btn-disabled");
 89                     }
 90 
 91                     //模擬change事件
 92                     $(nowinput).trigger('change');
 93 
 94                     return;
 95                 });
 96             });
 97         }
 98     };
 99     exports('common', obj);
100 });

4.JS實例化使用

1 layui.extend({    
2       common: '{/}/assets/js/common'  //改為上方代碼所在文件的路徑
3 }).use(['common'], function(){    
4    var common = layui.common;    common.plusminus();
5 })

至此,數字加減模塊已經完成。動態添加的元素如果想綁定,只需要在添加完以后再重新使用該方法即可,即common.plusminus()。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM