Здається, minlength
атрибут для <input>
поля не працює.
Чи є якийсь інший атрибут у HTML5, за допомогою якого я можу встановити мінімальну довжину значення для полів?
Здається, minlength
атрибут для <input>
поля не працює.
Чи є якийсь інший атрибут у HTML5, за допомогою якого я можу встановити мінімальну довжину значення для полів?
Відповіді:
Ви можете використовувати 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){}"
Зараз у властивості HTML5 єminlength
властивість , а також інтерфейс.validity.tooShort
Обидва тепер увімкнено в останніх версіях усіх сучасних браузерів. Детальніше див. На https://caniuse.com/#search=minlength .
minlength
атрибут з версії 51 .
Ось лише рішення для HTML5 (якщо ви хочете перевірити мінімальну довжину 5, максимальну довжину 10 символів)
http://jsfiddle.net/xhqsB/102/
<form>
<input pattern=".{5,10}">
<input type="submit" value="Check"></input>
</form>
title
атрибут із необхідним повідомленням.
pattern
відповідь було дано декількома місяцями раніше . Як ця відповідь краща?
Так, є. Це як максимальна довжина. Документація W3.org: http://www.w3.org/TR/html5/forms.html#attr-fe-minlength
У випадку, якщо minlength
це не працює, використовуйте pattern
атрибут, як згадується @ Pumbaa80 для input
тегу.
Для textarea:
для встановлення max; скористайтесь maxlength
і протягом хв перейдіть за цим посиланням .
Ви знайдете тут і максимум, і мінімум.
Я використовував maxlength і minlength з або без, required
і це дуже добре працювало на HTML5.
<input id="passcode" type="password" minlength="8" maxlength="10">
`
Атрибут 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
як для входів, так і для текстових областей. Дивіться також цю планку .
data-ng-minlength
але чому б розробник піклувався про стандарти? > __>
data-ng-minlength
якості колодязя .
Моє рішення для textarea з використанням jQuery та комбінування HTML5 вимагає перевірки для перевірки мінімальної довжини.
$(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
Атрибут зараз широко підтримується у більшості браузерів .
<input type="text" minlength="2" required>
Але, як і в інших функціях HTML5, IE11 відсутній у цій панорамі. Отже, якщо у вас є широка база користувачів IE11, подумайте про використання pattern
атрибута HTML5, який майже в усіх веб-переглядачах підтримується (у тому числі IE11), який підтримується майже в усьому платі .
Щоб мати приємну та рівномірну реалізацію та, можливо, розширювану чи динамічну (на основі рамки, що генерує ваш 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
.
Нова версія:
Це розширює використання (textarea та input) та виправляє помилки.
// 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);
}
}
}
Я зауважую, що іноді в хромі, коли автозаповнення ввімкнено і поля поля в методі побудови браузера автозаповнення, він обходить правила перевірки мінімальної довжини, тому в цьому випадку вам доведеться відключити автозаповнення за наступним атрибутом:
autocomplete = "вимкнено"
<input autocomplete="new-password" name="password" id="password" type="password" placeholder="Password" maxlength="12" minlength="6" required />
Дивіться сторінку http://caniuse.com/#search=minlength , деякі веб-переглядачі можуть не підтримувати цей атрибут.
Якщо значення "типу" є одним із них:
текст, електронна пошта, пошук, пароль, тел або URL (попередження: не включати номер | зараз немає підтримки браузера "tel" - 2017.10)
використовувати атрибут minlength (/ maxlength), він визначає мінімальну кількість символів.
напр.
<input type="text" minlength="11" maxlength="11" pattern="[0-9]*" placeholder="input your phone number">
або використовувати атрибут "pattern":
<input type="text" pattern="[0-9]{11}" placeholder="input your phone number">
Якщо "type" є числом , althougth minlength (/ maxlength) не підтримується, ви можете використовувати атрибут min (/ 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);
}
}
Якщо ви хочете зробити цю поведінку,
завжди показуйте невеликий префікс у полі введення або користувач не може стерти префікс :
//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;
У моєму випадку, в якому я найбільше підтверджую вручну та використовую Firefox (43.0.4), minlength
таvalidity.tooShort
вони, на жаль, недоступні.
Оскільки мені потрібно мати лише мінімальні довжини, щоб продовжувати, простий і зручний спосіб - присвоїти це значення іншому дійсному атрибуту вхідного тегу. У такому випадку ви можете використовувати min
, max
та та step
властивості з [type = "number"] входів.
Замість того, щоб зберігати ці обмеження в масиві, простіше знайти його, що зберігається на одному вході, замість того, щоб ідентифікатор елемента відповідав індексу масиву.
Додаючи як максимум, так і мінімальне значення, ви можете вказати діапазон дозволених значень:
<input type="number" min="1" max="999" />