如果输入类型超出范围,则将输入类型="数字"限制为其最小值或最大值

Jos*_*shi 3 html numbers input restrict

我有以下代码

<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>
Run Code Online (Sandbox Code Playgroud)

如果用户在文本框中输入超出范围的值,则应将其重置为最接近的最小值或最大值,例如,如果用户在文本框中输入小于1,则应将其重置为1,如果用户输入的值超过4则它应该重置为4.

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

已经有一个解决方案对我不起作用

Aar*_*ers 7

这个解决方案可能就是您所追求的:jquery:在选项类型编号中设置最小最大输入

$(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);
        } 
    });      
}); 
Run Code Online (Sandbox Code Playgroud)

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


Jos*_*shi 6

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


Vin*_*ent 5

如果 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;
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

使用示例

<input type=number min=1 max=4 onkeyup=imposeMinMax(this)>
Run Code Online (Sandbox Code Playgroud)

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

  • 可能应该是 onblur 而不是 onkeyup,以防最小值超过一位数 (2认同)