【问题标题】:Restrict input type="number" to its min or max if it is out of range如果超出范围,则将输入 type="number" 限制为其最小值或最大值
【发布时间】:2016-04-01 06:12:53
【问题描述】:

我有以下代码

<form:input type="number" min="1" max="4" size="5" value="1" path="n" name='n' placeholder="<5" style="height:25px;width:60px"></form:input>

如果用户在文本框中输入的值超出范围,那么它应该重置为最接近的最小值或最大值,例如,如果用户在文本框中输入的值小于 1,那么如果他输入更多,它应该重置为 1大于 4 那么它应该被重置为 4。

如果我们有任何其他标签而不是使用输入标签来限制,请告知

已经有一个不适合我的解决方案

【问题讨论】:

标签: html input numbers restrict


【解决方案1】:

此解决方案可能就是您所追求的:jquery: set min max input in option type number

$(function () {
    $( "input" ).change(function() {
        var max = parseInt($(this).attr('max'));
        var min = parseInt($(this).attr('min'));
        if ($(this).val() > max)
        {
            $(this).val(max);
        }
        else if ($(this).val() < min)
        {
            $(this).val(min);
        } 
    });      
}); 

@Caspian 还提供了一个工作小提琴:http://jsfiddle.net/Ddk67/75/

【讨论】:

  • 这可行,但我没想到会有 jQuery。实际上 input type=number 只处理,如果输入的数字不在范围内,则不允许用户提交表单
  • @AaronLavers 在这个解决方案中,它接受 'e' 作为数字 :) 你应该在输入值上使用 parseInt() 并在 else-if 语句中使用 isNaN() ;)
【解决方案2】:

实际上输入 type=number 只处理,如果输入的数字不在范围内,则不允许用户提交表单

【讨论】:

    【解决方案3】:

    如果 HTML5 真的阻止输入值就好了,因为仅阻止提交值并不能满足所有用例。

    在这种情况下,我会在 keyup 上调用以下函数。

    function imposeMinMax(el){
      if(el.value != ""){
        if(parseInt(el.value) < parseInt(el.min)){
          el.value = el.min;
        }
        if(parseInt(el.value) > parseInt(el.max)){
          el.value = el.max;
        }
      }
    }
    

    使用示例

    <input type=number min=1 max=4 onkeyup=imposeMinMax(this)>
    

    如果用户输入较大的值,这会将值重置为最大值,如果用户输入的值较小,则会将其重置为最小值。

    【讨论】:

    • 可能应该是onblur而不是onkeyup,以防最小值超过一个数字
    猜你喜欢
    • 2019-06-23
    • 2018-05-27
    • 2020-08-27
    • 1970-01-01
    • 1970-01-01
    • 2016-11-25
    • 2014-03-22
    • 2015-09-02
    • 2023-01-30
    相关资源
    最近更新 更多