输入类型数字最大值不起作用



我有一个带有最小值和最大值的输入类型数字元素。防止默认功能,我已经自定义它以使用单独的输入。

我不知道我们如何从包含最小和最大属性的输入元素触发最大值。虽然我给最大范围加号交叉值。

$('.plus').on('click', function(e) {
    var val = parseInt($(this).prev('input').val());
    $(this).prev('input').attr('value', val + 1);
});
$('.minus').on('click', function(e) {
    var val = parseInt($(this).next('input').val());
    if (val !== 0) {
        $(this).next('input').attr('value', val - 1);
    }
});
body {
  background-color:#eeeeee;
  margin: 40px;
}
.minus,
.plus {
    border: none;
    padding: 10px;
    width: 40px;
    font-size: 16px;
}
input[type=number].quantity::-webkit-inner-spin-button { 
   -webkit-appearance: none; 
    margin: 0; 
}
.quantity {
    padding: 10px;
    border: none;
    width: 40px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="quantity-block">
    <input class="minus" type="button" value="-">
    <input type="number" value="1" class="quantity" size="4" min="1" max="5"/>
    <input class="plus" type="button" value="+">
</div>

您可以读取 max 属性,然后在条件中使用它:

$('.plus').on('click', function(e) {
    var val = parseInt($(this).prev('input').val());
    var max = parseInt($(this).prev('input').attr('max'));
    if(val < max) {
      $(this).prev('input').attr('value', val + 1);
    }
});
$('.minus').on('click', function(e) {
    var val = parseInt($(this).next('input').val());
    if (val !== 0) {
        $(this).next('input').attr('value', val - 1);
    }
});
body {
  background-color:#eeeeee;
  margin: 40px;
}
.minus,
.plus {
    border: none;
    padding: 10px;
    width: 40px;
    font-size: 16px;
}
input[type=number].quantity::-webkit-inner-spin-button { 
   -webkit-appearance: none; 
    margin: 0; 
}
.quantity {
    padding: 10px;
    border: none;
    width: 40px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="quantity-block">
    <input class="minus" type="button" value="-">
    <input type="number" value="1" class="quantity" size="4" min="1" max="5"/>
    <input class="plus" type="button" value="+">
</div>

Javascript 独立于 HTML5 验证。因此,您可以从jquery获取最大值和最小值,并将最大值和最小值设置为js。喜欢:

 $('.plus').on('click', function(e) {
    var val = parseInt($(this).prev('input').val());
    var max = parseInt($(this).prev('input').attr('max'));
    if(val == max) {
        return;
    }
    $(this).prev('input').val(val + 1);
});
 $('.minus').on('click', function(e) {
    var val = parseInt($(this).next('input').val());
    var min = $(this).prev('input').attr("min");
   if (val == min) {
      return;
   }
    $(this).next('input').val(val - 1);
 });
 // to prevent when user directly type to the textbox
 $(".quantity").keydown(function(){
      var val = $(this).val();
      var min = $(this).attr("min");
      var max = $(this).attr("max");
      if(val > max || val < min){
          $(this).val("");
          return false;    
      }
 });

你只需要放一个 if 条件,

$('.plus').on('click', function(e) {
    var val = parseInt($(this).prev('input').val());
     if (val < $(this).prev('input').attr('max'))
       {
    $(this).prev('input').attr('value', val + 1);
         }
});
$('.minus').on('click', function(e) {
    var val = parseInt($(this).next('input').val());
    if (val !== 0) {
        $(this).next('input').attr('value', val - 1);
    }
});
body {
  background-color:#eeeeee;
  margin: 40px;
}
.minus, .plus {
    border: none;
    padding: 10px;
    width: 40px;
    font-size: 16px;
}
input[type=number].quantity::-webkit-inner-spin-button { 
   -webkit-appearance: none; 
    margin: 0; 
}
.quantity {
    padding: 10px;
    border: none;
    width: 40px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="quantity-block">
    <input class="minus" type="button" value="-">
    <input type="number" value="1" class="quantity" size="4" min="1" max="5"/>
    <input class="plus" type="button" value="+">
</div>

实际上input[type=number]min/max属性有效,但仅适用于箭头键,对于+/-按钮单击,最好具有以下建议的一些条件:

$('.plus').on('click', function(e) {
  var val = parseInt($(this).prev('input').val());
  if (val != $(this).prev('input').attr('max')) { // check the value against max attribute
    $(this).prev('input').attr('value', val + 1);
  }
});
$('.minus').on('click', function(e) {
  var val = parseInt($(this).next('input').val());
  if (val != $(this).next('input').attr('min')) {// check the value against min attribute
    $(this).next('input').attr('value', val - 1);
  }
});
body {
  background-color: #eeeeee;
  margin: 40px;
}
.minus,
.plus {
  border: none;
  padding: 10px;
  width: 40px;
  font-size: 16px;
}
input[type=number].quantity::-webkit-inner-spin-button {
  -webkit-appearance: none;
  margin: 0;
}
.quantity {
  padding: 10px;
  border: none;
  width: 40px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="quantity-block">
  <input class="minus" type="button" value="-">
  <input type="number" value="1" class="quantity" min="1" max="5" />
  <input class="plus" type="button" value="+">
</div>

我在

学习时必须解决的问题的变体 - (制作两个按钮来增加或减少一个值,当数字达到最小值时 - 将其重置为最大值,反之亦然)。我稍微调整了一下以考虑到您的最小/最大值。不是说它一定是好的 - 但对于一个学习程序员来说,这是一个有趣的问题。

<html>
    <head>
        <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
    </head>
    <body>
        <input type = "button" value = "-1"></input>
        <input type = "text" value = "1" id="counter"  min="0" max="5"></input>
        <input type = "button" value = "+1"></input>
        <script>
            $(":button").click(function() {
                var result = parseFloat($("#counter").val())+parseFloat(($(this).val()));
                if(result>$("#counter").attr('max')){result=1}else{if(result==$("#counter").attr('min')){result=5}};
                $('#counter').val(result);
            });
        </script>
    </body>
</html>

最新更新