Es scheint, dass das minlength
Attribut für ein <input>
Feld nicht funktioniert.
Gibt es ein anderes Attribut in HTML5, mit dessen Hilfe ich die minimale Länge eines Werts für Felder festlegen kann?
Es scheint, dass das minlength
Attribut für ein <input>
Feld nicht funktioniert.
Gibt es ein anderes Attribut in HTML5, mit dessen Hilfe ich die minimale Länge eines Werts für Felder festlegen kann?
Antworten:
Sie können das pattern
Attribut verwenden . Das required
Attribut wird ebenfalls benötigt, andernfalls wird ein Eingabefeld mit einem leeren Wert von der Einschränkungsüberprüfung ausgeschlossen .
<input pattern=".{3,}" required title="3 characters minimum">
<input pattern=".{5,10}" required title="5 to 10 characters">
Wenn Sie die Option erstellen möchten, das Muster für "leer oder Mindestlänge" zu verwenden, können Sie Folgendes tun:
<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
, wird die Fehlermeldung auch dann angezeigt, wenn Sie die Eingabe korrigiert haben. Sie können die folgende onchange
Methode verwenden, um dem entgegenzuwirken. oninvalid="this.setCustomValidity('Field must contain min. 5 characters')" onchange="try{setCustomValidity('')}catch(e){}"
Es ist eine minlength
Eigenschaft in HTML5 - Spezifikation jetzt, sowie die validity.tooShort
Schnittstelle.
Beide sind jetzt in neueren Versionen aller modernen Browser aktiviert. Weitere Informationen finden Sie unter https://caniuse.com/#search=minlength .
minlength
Attribute seit Version 51 .
Hier ist eine reine HTML5-Lösung (wenn Sie eine Validierung mit einer Länge von 5 und einer maximalen Länge von 10 Zeichen wünschen)
http://jsfiddle.net/xhqsB/102/
<form>
<input pattern=".{5,10}">
<input type="submit" value="Check"></input>
</form>
title
Attribut mit der erforderlichen Nachricht hinzu.
pattern
Antwort wurde einige Monate zuvor gegeben . Wie ist diese Antwort besser?
Ja, da ist es. Es ist wie maximale Länge. W3.org-Dokumentation: http://www.w3.org/TR/html5/forms.html#attr-fe-minlength
Falls minlength
dies nicht funktioniert, verwenden Sie das pattern
von @ Pumbaa80 angegebene Attribut für das input
Tag.
Für Textbereich:
Zum Einstellen von max; benutze maxlength
und gehe für min zu diesem Link .
Sie finden hier sowohl für max als auch für min.
Ich habe Maxlength und Minlength mit oder ohne verwendet required
und es hat bei HTML5 sehr gut funktioniert.
<input id="passcode" type="password" minlength="8" maxlength="10">
`
Das minLength-Attribut (im Gegensatz zu maxLength) ist in HTML5 nicht nativ vorhanden. Es gibt jedoch einige Möglichkeiten, ein Feld zu überprüfen, wenn es weniger als x Zeichen enthält.
Ein Beispiel wird mit jQuery unter diesem Link gegeben: 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>
Nicht HTML5, aber trotzdem praktisch: Wenn Sie AngularJS verwenden , können Sie es sowohl ng-minlength
für Eingaben als auch für Textbereiche verwenden. Siehe auch diesen Plunk .
data-ng-minlength
aber warum sollte sich ein Entwickler für Standards interessieren? > __>
data-ng-minlength
auch .
Meine Lösung für Textbereiche mit jQuery und der Kombination von HTML5 erforderte eine Validierung, um die Mindestlänge zu überprüfen.
$(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
Das Attribut wird mittlerweile in den meisten Browsern weitgehend unterstützt .
<input type="text" minlength="2" required>
Aber wie bei anderen HTML5-Funktionen fehlt IE11 in diesem Panorama. Wenn Sie also eine breite IE11-Benutzerbasis haben, sollten Sie das pattern
HTML5-Attribut verwenden, das in den meisten Browsern (einschließlich IE11) fast überall unterstützt wird .
Um eine schöne und einheitliche Implementierung zu haben und möglicherweise erweiterbar oder dynamisch (basierend auf dem Framework, das Ihren HTML-Code generiert), würde ich für das pattern
Attribut stimmen :
<input type="text" pattern=".{2,}" required>
Es gibt immer noch einen kleinen Usability-Haken bei der Verwendung pattern
. Der Benutzer sieht bei der Verwendung eine nicht intuitive (sehr allgemeine) Fehler- / Warnmeldung pattern
. Siehe diese jsfiddle oder unten:
<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>
In Chrome (aber in den meisten Browsern ähnlich) werden beispielsweise die folgenden Fehlermeldungen angezeigt:
Please lengthen this text to 2 characters or more (you are currently using 1 character)
mit minlength
und
Please match the format requested
mit pattern
.
Neue Version:
Es erweitert die Verwendung (Textbereich und Eingabe) und behebt Fehler.
// 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);
}
}
}
Ich stelle fest, dass in Chrome manchmal, wenn das automatische Ausfüllen aktiviert ist und die Felder von der eingebauten Methode des automatischen Füllbrowsers Feld sind, die Validierungsregeln für die Mindestlänge umgangen werden. In diesem Fall müssen Sie das automatische Ausfüllen durch das folgende Attribut deaktivieren:
autocomplete = "aus"
<input autocomplete="new-password" name="password" id="password" type="password" placeholder="Password" maxlength="12" minlength="6" required />
Siehe http://caniuse.com/#search=minlength . Einige Browser unterstützen dieses Attribut möglicherweise nicht.
Wenn der Wert des "Typs" einer von ihnen ist:
Text, E-Mail, Suche, Passwort, Telefon oder URL (Warnung: Nummer nicht angeben | Keine Browserunterstützung "Tel" jetzt - 2017.10)
Verwenden Sie das Attribut minlength (/ maxlength), um die Mindestanzahl von Zeichen anzugeben.
z.B.
<input type="text" minlength="11" maxlength="11" pattern="[0-9]*" placeholder="input your phone number">
oder verwenden Sie das Attribut "Muster":
<input type="text" pattern="[0-9]{11}" placeholder="input your phone number">
Wenn der "Typ" eine Zahl ist und die minimale Länge (/ maxlength) nicht unterstützt wird, können Sie min verwenden stattdessen das Attribut (/ max) verwenden.
z.B.
<input type="number" min="100" max="999" placeholder="input a three-digit number">
Ich habe diesen JavaScript-Code [minlength.js] geschrieben:
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);
}
}
Wenn Sie dieses Verhalten ausführen möchten, zeigen Sie
immer ein kleines Präfix im Eingabefeld an, oder der Benutzer kann ein Präfix nicht löschen :
//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;
In meinem Fall, in dem ich am meisten manuell und mit Firefox (43.0.4) validiere minlength
und validity.tooShort
leider nicht verfügbar bin .
Da ich nur minimale Längen speichern muss, um fortzufahren, besteht eine einfache und praktische Möglichkeit darin, diesen Wert einem anderen gültigen Attribut des Eingabe-Tags zuzuweisen. In diesem Fall ist, dann können Sie verwenden min
, max
undstep
Eigenschaften von [type = „Anzahl“] Eingänge.
Anstatt diese Grenzwerte in einem Array zu speichern, ist es einfacher, sie in derselben Eingabe zu finden, als die Element-ID so abzurufen, dass sie mit dem Array-Index übereinstimmt.
Fügen Sie sowohl einen Max- als auch einen Min-Wert hinzu. Sie können den Bereich der zulässigen Werte angeben:
<input type="number" min="1" max="999" />