HTML5中是否有minlength验证属性?

Is there a minlength validation attribute in HTML5?

似乎字段的minlength属性不起作用。

HTML5中是否还有其他属性可以帮助我设置字段值的最小长度?


您可以使用pattern属性。还需要required属性,否则将从约束验证中排除具有空值的输入字段。

1
2
<input pattern=".{3,}"   required title="3 characters minimum">
<input pattern=".{5,10}" required title="5 to 10 characters">

如果要创建将模式用于"空或最小长度"的选项,可以执行以下操作:

1
2
<input pattern=".{0}|.{5,10}" required title="Either 0 OR (5 to 10 chars)">
<input pattern=".{0}|.{8,}"   required title="Either 0 OR (8 chars minimum)">


现在HTML5规范中有一个minlength属性,以及validity.tooShort接口。

两者现在都在所有现代浏览器的最新版本中启用。有关详细信息,请参阅https://caniuse.com/#search=minlength。


这是HTML5专用解决方案(如果你想要minlength 5,maxlength 10字符验证)

http://jsfiddle.net/xhqsB/102/

1
2
3
4
<form>
  <input pattern=".{5,10}">
  <input type="submit" value="Check"></input>
</form>


是的,就是这样。这就像maxlength。 W3.org文档:
http://www.w3.org/TR/html5/forms.html#attr-fe-minlength

如果minlength不起作用,请使用@ Pumbaa80提到的pattern属性作为input标记。

对于textarea:
用于设置最大值;使用maxlength并为min转到此链接。

你会在这里找到最大和最小。


不是HTML5,但实际上是实用的:如果你碰巧使用AngularJS,你可以使用ng-minlength输入和textareas。另见Plunk。


minLength属性(与maxLength不同)在HTML5中本身不存在。
但是,有一些方法可以验证字段是否包含少于x个字符。

在此链接中使用jQuery给出了一个示例:http://docs.jquery.com/Plugins/Validation/Methods/minlength

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<html>
<head>
  <script src="http://code.jquery.com/jquery-latest.js">
  <script type="text/javascript" src="http://jzaefferer.github.com/jquery-validation/jquery.validate.js">
<script type="text/javascript">
jQuery.validator.setDefaults({
    debug: true,
    success:"valid"
});;


 
  $(document).ready(function(){
    $("#myform").validate({
  rules: {
    field: {
      required: true,
      minlength: 3
    }
  }
});
  });
 
</head>
<body>

<form id="myform">
  <label for="field">Required, Minimum length 3: </label>
  <input class="left" id="field" name="field" />
  <br/>
  <input type="submit" value="Validate!" />
</form>

</body>
</html>


我使用jQuery的textarea解决方案并结合HTML5需要验证以检查最小长度。

minlength.js

1
2
3
4
5
6
7
8
$(document).ready(function(){
  $('form textarea[minlength]').on('keyup', function(){
    e_len = $(this).val().trim().length
    e_min_len = Number($(this).attr('minlength'))
    message = e_min_len <= e_len ? '' : e_min_len + ' characters minimum'
    this.setCustomValidity(message)
  })
})

HTML

1
2
3
<form action="">
  <textarea name="test_min_length" id="" cols="30" rows="10" minlength="10"></textarea>
</form>


我使用maxlength和minlength,有或没有required,它对我来说非常适合HTML5。

1
<input id="passcode" type="password" minlength="8" maxlength="10">

`


新版本:

它扩展了使用(textarea和输入)并修复了bug。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// Author: Carlos Machado
// Version: 0.2
// Year: 2015
window.onload = function() {
    function testFunction(evt) {
        var items = this.elements;
        for (var j = 0; j < items.length; j++) {
            if ((items[j].tagName =="INPUT" || items[j].tagName =="TEXTAREA") && items[j].hasAttribute("minlength")) {
                if (items[j].value.length < items[j].getAttribute("minlength") && items[j].value !="") {
                    items[j].setCustomValidity("The minimum number of characters is" + items[j].getAttribute("minlength") +".");
                    items[j].focus();
                    evt.defaultPrevented;
                    return;
                }
                else {
                    items[j].setCustomValidity('');
                }
            }
        }
    }
    var isOpera = !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0;
    var isChrome = !!window.chrome && !isOpera;
    if(!isChrome) {
        var forms = document.getElementsByTagName("form");
        for(var i = 0; i < forms.length; i++) {
            forms[i].addEventListener('submit', testFunction,true);
            forms[i].addEventListener('change', testFunction,true);
        }
    }
}


现在,大多数浏览器都广泛支持minlength属性。

1
<input type="text" minlength="2" required>

但是,与其他HTML5功能一样,此全景图中缺少IE11。 因此,如果您拥有广泛的IE11用户群,请考虑使用大多数浏览器(包括IE11)中几乎全面支持的pattern HTML5属性。

要拥有一个漂亮而统一的实现,可能是可扩展的或动态的(基于生成HTML的框架),我会投票支持pattern属性:

1
<input type="text" pattern=".{2,}" required>

使用pattern时仍然存在小的可用性问题。 使用pattern时,用户将看到非直观(非常通用)的错误/警告消息。 看到这个jsfiddle或以下:

1
2
3
4
5
6
7
8
9
10
11
In each form type 1 character and press submit

<form action="#">
  Input with minlength: <input type="text" minlength="2" required name="i1">
  <input type="submit" value="Submit">
</form>

<form action="#">
  Input with patern: <input type="text" pattern=".{2,}" required name="i1">
  <input type="submit" value="Submit">
</form>

例如,在Chrome中(但在大多数浏览器中类似),您将收到以下错误消息:

1
Please lengthen this text to 2 characters or more (you are currently using 1 character)

通过使用minlength

1
Please match the format requested

通过使用pattern


我注意到自动填充打开时有时在chrome中,并且字段是自动填充浏览器内置方法的字段,
它绕过了minlength验证规则,因此在这种情况下,您必须通过以下属性禁用自动填充:

自动填充="关闭"

1
<input autocomplete="new-password" name="password" id="password" type="password" placeholder="Password" maxlength="12" minlength="6" required />


请参阅http://caniuse.com/#search=minlength,某些浏览器可能不支持此属性。

如果"类型"的值是其中之一:

文本,电子邮件,搜索,密码,电话或网址(警告:不包括号码|没有浏览器支持"tel"现在 - 2017.10)

使用minlength(/ maxlength)属性,它指定最小字符数。

例如。

1
<input type="text" minlength="11" maxlength="11" pattern="[0-9]*" placeholder="input your phone number">

或使用"模式"属性:

1
<input type="text" pattern="[0-9]{11}" placeholder="input your phone number">

如果"type"是数字,则不支持minlength(/ maxlength),您可以使用min(/ max)属性代替它。

例如。

1
<input type="number" min="100" max="999" placeholder="input a three-digit number">

我写了这个JavaScript代码,[minlength.js]:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
window.onload = function() {
    function testaFunction(evt) {
        var elementos = this.elements;
        for (var j = 0; j < elementos.length; j++) {
            if (elementos[j].tagName =="TEXTAREA" && elementos[j].hasAttribute("minlength")) {
                if (elementos[j].value.length < elementos[j].getAttribute("minlength")) {
                    alert("The textarea control must be at least" + elementos[j].getAttribute("minlength") +" characters.");
                    evt.preventDefault();
                };
            }
        }
    }
    var forms = document.getElementsByTagName("form");
    for(var i = 0; i < forms.length; i++) {
        forms[i].addEventListener('submit', testaFunction, true);
    }
}

如果愿意做出这种行为,
始终在输入字段上显示小前缀或用户无法删除前缀:

1
2
3
4
   //prefix="prefix_text"
   //if the user change the prefix, restore the input with the prefix:
   if(document.getElementById('myInput').value.substring(0,prefix.length).localeCompare(prefix))
       document.getElementById('myInput').value = prefix;

我使用了max和min然后需要它对我很有用,但不确定是否是一种编码方法。我希望它有所帮助

1
<input type="text" maxlength="13" name ="idnumber" class="form-control"  minlength="13" required>

在我的情况下,我手动验证最多并使用Firefox(43.0.4),遗憾的是minlengthvalidity.tooShort不可用。

由于我只需要存储最小长度以便继续,因此一种简单方便的方法是将此值分配给输入标记的另一个有效属性。在那种情况下,您可以使用[type ="number"]输入中的minmaxstep属性。

不是将这些限制存储在数组中,而是更容易找到它存储在同一输入中,而不是获取元素id以匹配数组索引。


添加最大值和最小值,您可以指定允许值的范围:

1
<input type="number" min="1" max="999" />