How to restrict user input character length of HTML5 input type=“number”?

前端 未结 4 370
自闭症患者
自闭症患者 2021-01-13 11:44

How do I restrict user input to a given length in an HTML5 input[type=number] textbox?

the answers to

How can I limit possible inputs in a HTML

相关标签:
4条回答
  • 2021-01-13 12:16

    I don't know my answer is useful for you? But i happy if i can help you. you should write a js method and then use it in your html page.

    function limit(element) {
      var max_chars = 2;
    
      if(element.value.length > max_chars) {
        element.value = element.value.substr(0, max_chars);
      }
    }
    
    
    <input type="number" onkey ="limit(this);" onkeyup="limit(this);">
    
    0 讨论(0)
  • 2021-01-13 12:29

    to dynamically set max limit

    function limit(element,max_chars) {
    
      if(element.value.length > max_chars) {
        element.value = element.value.substr(0, max_chars);
      }
    }
    
    
    <input type="number" onkey ="limit(this);" onkeyup="limit(this,2);">
    
    0 讨论(0)
  • 2021-01-13 12:34

    Here is my suggestion after testing a few things

    1. it handles more than one field with the quantity class
    2. it handles illegal input where supported
    3. initialises by storing all defaultValues of the fields with the class
    4. handles a weirdness with .index()
    5. works in IE<10 too
    6. tested in Safari 5.1 on Windows - it reacted to the is(":invalid") which however is invalid in IE8

    Live Demo

    var inputQuantity = [];
    $(function() {
      $(".quantity").each(function(i) {
        inputQuantity[i]=this.defaultValue;
         $(this).data("idx",i); // save this field's index to access later
      });
      $(".quantity").on("keyup", function (e) {
        var $field = $(this),
            val=this.value,
            $thisIndex=parseInt($field.data("idx"),10); // retrieve the index
        // NOTE :invalid pseudo selector is not valid in IE8 so MUST be last
        if (this.validity && this.validity.badInput || isNaN(val) || $field.is(":invalid") ) { 
            this.value = inputQuantity[$thisIndex];
            return;
        } 
        if (val.length > Number($field.attr("maxlength"))) {
          val=val.slice(0, 5);
          $field.val(val);
        }
        inputQuantity[$thisIndex]=val;
      });      
    });
    
    0 讨论(0)
  • 2021-01-13 12:42

    Since there is no uniform support for HTML5 input types I suggest using this script template until all browsers will support them.

    $(".quantity").each(function() {
        $(this).attr("type", "text")
        var min = $(this).attr("min");
        var max = $(this).attr("max");
        $(this).removeAttr("min").removeAttr("max");
        $(this).keyup(function(){
            var $field = $(this);
            if ($field.val().length > Number($field.attr("maxlength"))) {
                var value = $field.val().slice(0, 5);
                //   add js integer validation here using min and max
                $field.val(value);
            }
        });
    });
    

    Then we can simply leave HTML5 elements untouched

    0 讨论(0)
提交回复
热议问题