jQuery实现 Input 数量的加减,可用于购物车

jerry thinkphp 2015年11月19日 收藏
项目中自己写的,用于点击增减按钮来改变input框中的值,完全可以通用,一个页面上也可以有多个,可用于购物车,可设置最大最小值,及每次的增减值,当然也可以不设置,本人小白,不足之处请见谅
  1. $(function() {
  2.     /**
  3.      * 通用
  4.      * 购物车加一减一
  5.      * data-min为最小值,data-max为最大值,data-step为步长(默认为1,或不设置,步长即为每操作一下“加”或“减”的数值)
  6.      * 不加data-min和data-max则无限制
  7.      * HTML:
  8.      *      <p class="cart-number-box">
  9.      *            <input type="text" value="1" name="number" data-min="1" data-max="5" data-step="2">
  10.      *            <i class="up input-num-up">+</i>
  11.      *            <i class="down input-num-down">-</i>
  12.      *        </p>
  13.      * CSS:
  14.      *      .cart-number-box { position: relative; }
  15.      *        .cart-number-box input { width: 60px; height: 27px; margin-left: 26px; text-align: center; }
  16.      *        .cart-number-box input,
  17.      *        .cart-number-box .up,
  18.      *        .cart-number-box .down { border: 1px solid #aaa; }
  19.      *        .cart-number-box .up,
  20.      *        .cart-number-box .down { position: absolute; display: block; width: 27px; height: 27px; top: 0; text-align: center; line-height: 23px; font-style: normal; cursor: pointer; }
  21.      *        .cart-number-box .up { left: 85px; }
  22.      *      .disabled { cursor: not-allowed; filter: alpha(opacity=65); -webkit-box-shadow: none; box-shadow: none; opacity: .65 }
  23.      * DATE:2015.8.3
  24.      */
  25.     $('.input-num-up').click(function(){
  26.         upDownOperation( $(this) );
  27.     });

  28.     $('.input-num-down').click(function(){
  29.         upDownOperation( $(this) );
  30.     });

  31.     function upDownOperation(element)
  32.     {
  33.         var _input = element.parent().find('input'),
  34.             _value = _input.val(),
  35.             _step = _input.attr('data-step') || 1;

  36.         //检测当前操作的元素是否有disabled,有则去除
  37.         element.hasClass('disabled') && element.removeClass('disabled');

  38.         //检测当前操作的元素是否是操作的添加按钮(.input-num-up)‘是’ 则为加操作,‘否’ 则为减操作
  39.         if ( element.hasClass('input-num-up') )
  40.         {
  41.             var _new_value = parseInt( parseFloat(_value) + parseFloat(_step) ),
  42.                 _max = _input.attr('data-max') || false,
  43.                 _down = element.parent().find('.input-num-down');
  44.             
  45.             //若执行‘加’操作且‘减’按钮存在class='disabled'的话,则移除‘减’操作按钮的class 'disabled'
  46.             _down.hasClass('disabled') && _down.removeClass('disabled');
  47.             if (_max && _new_value >= _max) {
  48.                 _new_value = _max;
  49.                 element.addClass('disabled');
  50.             }
  51.         } else {
  52.             var _new_value = parseInt( parseFloat(_value) - parseFloat(_step) ),
  53.                 _min = _input.attr('data-min') || false,
  54.                 _up = element.parent().find('.input-num-up');

  55.             //若执行‘减’操作且‘加’按钮存在class='disabled'的话,则移除‘加’操作按钮的class 'disabled'
  56.             _up.hasClass('disabled') && _up.removeClass('disabled');
  57.             if (_min && _new_value <= _min) {
  58.                 _new_value = _min;
  59.                 element.addClass('disabled');
  60.             }
  61.         }
  62.         _input.val( _new_value );
  63.     }
  64. });

附件input.up.down.zip ( 1.28 KB 下载:61 次 )