似乎该字段的minlength
属性<input>
无效。
HTML5中是否还有其他属性可以设置字段值的最小长度?
似乎该字段的minlength
属性<input>
无效。
HTML5中是否还有其他属性可以设置字段值的最小长度?
Answers:
您可以使用pattern
属性。该required
属性也是必需的,否则约束验证将排除具有空值的输入字段。
<input pattern=".{3,}" required title="3 characters minimum">
<input pattern=".{5,10}" required title="5 to 10 characters">
如果要创建用于将模式用于“空或最小长度”的选项,则可以执行以下操作:
<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)">
oninvalid="this.setCustomValidity('Your message')"
setCustomValidity
,那么即使您更正了输入,它也会继续向您显示错误消息。您可以使用以下onchange
方法来解决此问题。oninvalid="this.setCustomValidity('Field must contain min. 5 characters')" onchange="try{setCustomValidity('')}catch(e){}"
目前是一个minlength
房地产HTML5规范现在,还有validity.tooShort
接口。
现在,所有现代浏览器的最新版本均启用了这两种功能。有关详细信息,请参见https://caniuse.com/#search=minlength。
这是仅HTML5的解决方案(如果您要最小长度5,最大长度10个字符验证)
http://jsfiddle.net/xhqsB/102/
<form>
<input pattern=".{5,10}">
<input type="submit" value="Check"></input>
</form>
title
带有必需消息的属性。
是的,那里。就像maxlength。W3.org文档:http : //www.w3.org/TR/html5/forms.html#attr-fe-minlength
如果minlength
不起作用,请使用pattern
@ Pumbaa80提到的属性作为input
标记。
对于textarea:
用于设置max;使用maxlength
和分钟转到此链接。
您将在此处找到最大和最小。
minLength属性(与maxLength不同)在HTML5中本身不存在。但是,如果字段包含少于x个字符,则有一些方法可以验证该字段。
在下面的链接中使用jQuery提供了一个示例:http : //docs.jquery.com/Plugins/Validation/Methods/minlength
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript" src="http://jzaefferer.github.com/jquery-validation/jquery.validate.js"></script>
<script type="text/javascript">
jQuery.validator.setDefaults({
debug: true,
success: "valid"
});;
</script>
<script>
$(document).ready(function(){
$("#myform").validate({
rules: {
field: {
required: true,
minlength: 3
}
}
});
});
</script>
</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>
不是HTML5,而是实用的:如果碰巧使用AngularJS,则可以同时使用ng-minlength
输入和文本区域。另请参阅此Plunk。
data-ng-minlength
但是为什么开发人员会关心标准?> __>
data-ng-minlength
也。
我的使用jQuery并结合HTML5的textarea解决方案需要验证以检查最小长度。
$(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)
})
})
<form action="">
<textarea name="test_min_length" id="" cols="30" rows="10" minlength="10"></textarea>
</form>
minlength
现在大多数浏览器都广泛支持attribute属性。
<input type="text" minlength="2" required>
但是,与其他HTML5功能一样,此全景图中也缺少IE11。因此,如果您拥有广泛的IE11用户群,请考虑使用大多数浏览器(包括IE11)pattern
几乎都支持的HTML5属性。
为了有一个好的统一的实现,并且可能是可扩展的或动态的(基于生成HTML的框架),我将投票给该pattern
属性:
<input type="text" pattern=".{2,}" required>
使用时,可用性仍然很小pattern
。使用时,用户将看到不直观(非常普通)的错误/警告消息pattern
。请参阅以下jsfiddle:
<h3>In each form type 1 character and press submit</h3>
</h2>
<form action="#">
Input with minlength: <input type="text" minlength="2" required name="i1">
<input type="submit" value="Submit">
</form>
<br>
<form action="#">
Input with patern: <input type="text" pattern=".{2,}" required name="i1">
<input type="submit" value="Submit">
</form>
例如,在Chrome(但在大多数浏览器中类似)中,您会收到以下错误消息:
Please lengthen this text to 2 characters or more (you are currently using 1 character)
通过使用minlength
和
Please match the format requested
通过使用pattern
。
新版本:
它扩展了用法(文本区域和输入)并修复了错误。
// 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);
}
}
}
我注意到有时在chrome中,当自动填充功能启用并且字段由自动填充浏览器内置方法设置为字段时,它会绕过最小长度验证规则,因此在这种情况下,您将必须通过以下属性禁用自动填充功能:
autocomplete =“ off”
<input autocomplete="new-password" name="password" id="password" type="password" placeholder="Password" maxlength="12" minlength="6" required />
请参阅http://caniuse.com/#search=minlength,某些浏览器可能不支持此属性。
如果“类型”的值是其中之一:
文字,电子邮件,搜索,密码,电话或url(警告:不包括数字 | 现在没有浏览器支持“电话” -2017.10)
使用minlength(/ maxlength)属性,它指定最小字符数。
例如。
<input type="text" minlength="11" maxlength="11" pattern="[0-9]*" placeholder="input your phone number">
或使用“模式”属性:
<input type="text" pattern="[0-9]{11}" placeholder="input your phone number">
如果“类型”为number,则不支持算法最小长度(/ maxlength),可以使用最小(/ max)属性代替。
例如。
<input type="number" min="100" max="999" placeholder="input a three-digit number">
我编写了以下JavaScript代码[minlength.js]:
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);
}
}
就我而言,我在其中验证了大部分手动和使用Firefox(43.0.4),minlength
并且validity.tooShort
不可不幸。
由于只需要存储最小长度即可继续,因此一种简便的方法是将此值分配给输入标签的另一个有效属性。在这种情况下,然后,可以使用min
,max
和step
从[类型=“号码”]的输入特性。
与其将这些限制存储在数组中,不如将其存储在同一输入中,而不是获取与数组索引匹配的元素ID,将更加容易。
同时添加最大值和最小值,您可以指定允许值的范围:
<input type="number" min="1" max="999" />