minlength
Bir <input>
alanın niteliği çalışmıyor gibi görünüyor .
HTML5'te, alanlar için bir değerin minimum uzunluğunu ayarlayabildiğim başka bir özellik var mı?
minlength
Bir <input>
alanın niteliği çalışmıyor gibi görünüyor .
HTML5'te, alanlar için bir değerin minimum uzunluğunu ayarlayabildiğim başka bir özellik var mı?
Yanıtlar:
pattern
Özniteliği kullanabilirsiniz . required
Özelliği, aynı zamanda, aksi takdirde, boş bir değere sahip bir giriş alanı hariç tutulur, gerekli kısıtlama doğrulama .
<input pattern=".{3,}" required title="3 characters minimum">
<input pattern=".{5,10}" required title="5 to 10 characters">
Deseni "boş veya minimum uzunluk" için kullanma seçeneğini oluşturmak istiyorsanız, aşağıdakileri yapabilirsiniz:
<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
, girişi düzelttikten sonra bile hata mesajını göstermeye devam eder. Buna onchange
karşı koymak için aşağıdaki yöntemi kullanabilirsiniz. oninvalid="this.setCustomValidity('Field must contain min. 5 characters')" onchange="try{setCustomValidity('')}catch(e){}"
Orada olan bir minlength
özellik HTML5 Spec şimdi, hem de validity.tooShort
arayüz.
Her ikisi de artık tüm modern tarayıcıların son sürümlerinde etkinleştirildi. Ayrıntılar için bkz. Https://caniuse.com/#search=minlength .
İşte yalnızca HTML5 çözümü (minlength 5, maxlength 10 karakter doğrulaması istiyorsanız)
http://jsfiddle.net/xhqsB/102/
<form>
<input pattern=".{5,10}">
<input type="submit" value="Check"></input>
</form>
title
için gerekli mesajla öznitelik ekleyin .
pattern
cevap birkaç ay önce verildi . Bu cevap nasıl daha iyi?
Evet, işte burada. Maxlength gibi. W3.org belgeleri: http://www.w3.org/TR/html5/forms.html#attr-fe-minlength
Durumda minlength
değil çalışır, kullanmak pattern
için @ Pumbaa80 tarafından belirtildiği gibi niteliğini input
etiketi.
Metin alanı için:
Maks. kullanın maxlength
ve min için bu bağlantıya gidin .
Burada hem max hem de min için bulacaksınız.
Maxlength ve minlength ile birlikte veya onsuz kullandım required
ve HTML5 için çok iyi çalıştı.
<input id="passcode" type="password" minlength="8" maxlength="10">
'
HTML5'te minLength özniteliği (maxLength öğesinin aksine) yerel olarak bulunmaz. Ancak bir alanı x karakterden daha az içeriyorsa doğrulamanın bazı yolları vardır.
Bu bağlantıda jQuery kullanılarak bir örnek verilmiştir: 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 değil, yine de pratik: AngularJS kullanıyorsanız ng-minlength
, hem girişler hem de textareas için kullanabilirsiniz . Ayrıca bkz bu Düşmek .
data-ng-minlength
ancak bir geliştirici neden standartları önemsiyordu? > __>
data-ng-minlength
kuyu olarak .
JQuery kullanarak ve HTML5'i birleştirerek textarea için benim çözümüm minimum uzunluğu kontrol etmek için doğrulama gerekli.
$(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
özelliği artık tarayıcıların çoğunda yaygın olarak desteklenmektedir .
<input type="text" minlength="2" required>
Ancak, diğer HTML5 özelliklerinde olduğu gibi IE11 de bu panoramada yok. Bu nedenle, geniş bir IE11 kullanıcı tabanınız varsa, çoğu tarayıcıda (IE11 dahil) pattern
neredeyse tüm tahtada desteklenen HTML5 özelliğini kullanmayı düşünün .
Güzel ve tek tip bir uygulamaya sahip olmak ve belki de genişletilebilir veya dinamik (HTML'nizi oluşturan çerçeveye dayanarak) için, bu pattern
özelliğe oy verirdim:
<input type="text" pattern=".{2,}" required>
Kullanırken hala küçük bir kullanılabilirlik yakalaması varpattern
. Kullanıcı kullanırken sezgisel olmayan (çok genel) bir hata / uyarı mesajı görecektir pattern
. Bkz bu jsfiddle veya altında:
<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>
Örneğin, Chrome'da (ancak çoğu tarayıcıda benzer), aşağıdaki hata iletilerini alırsınız:
Please lengthen this text to 2 characters or more (you are currently using 1 character)
kullanarak minlength
ve
Please match the format requested
kullanarak pattern
.
Yeni sürüm:
Kullanımı (textarea ve input) genişletir ve hataları düzeltir.
// 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);
}
}
}
Otomatik doldurma açıkken ve alanların otomatik doldurma tarayıcısı oluşturma yöntemiyle alan olduğunda bazen kromda olduğunu, minlength doğrulama kurallarını atladığını fark ettiğimden, bu durumda aşağıdaki özelliği kullanarak otomatik doldurmayı devre dışı bırakmanız gerekir:
Otomatik tamamlama = "kapalı"
<input autocomplete="new-password" name="password" id="password" type="password" placeholder="Password" maxlength="12" minlength="6" required />
Bkz. Http://caniuse.com/#search=minlength , bazı tarayıcılar bu özelliği desteklemeyebilir.
"Tür" değeri bunlardan biri ise:
metin, e-posta, arama, şifre, tel veya url (uyarı: sayı içermez | şimdi tarayıcı desteği yok "tel" - 2017.10)
Kullanım MINLENGTH (/ maxlength) nitelik, bu minimum karakter sayısını belirtir.
Örneğin.
<input type="text" minlength="11" maxlength="11" pattern="[0-9]*" placeholder="input your phone number">
veya "kalıp" özelliğini kullanın:
<input type="text" pattern="[0-9]{11}" placeholder="input your phone number">
"Tür" sayı ise , althougth minlength (/ maxlength) desteklenmezse, min bunun yerine (/ max) özelliğini .
Örneğin.
<input type="number" min="100" max="999" placeholder="input a three-digit number">
Bu JavaScript kodunu yazdım, [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);
}
}
Bu davranışı gerçekleştirmek isterseniz , giriş alanında
her zaman küçük bir önek gösterin veya kullanıcı bir öneki silemez :
//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;
Benim durumumda, en elle ve Firefox (43.0.4) kullanarak doğruladığım minlength
ve validity.tooShort
ne yazık ki mevcut değil.
Devam etmek için yalnızca minimum uzunlukları saklamam gerektiğinden, kolay ve kullanışlı bir yol, bu değeri giriş etiketinin geçerli başka bir özelliğine atamaktır. Daha sonra bu durumda, kullanabilir min
, max
ve step
[tipi = "sayı"] girişlerden özellikleri.
Bu sınırları bir dizide saklamak yerine, öğe kimliğinin dizi diziniyle eşleşmesini sağlamak yerine aynı girişte depolandığını bulmak daha kolaydır.
İzin verilen değerlerin aralığını belirtebileceğiniz bir maks ve min değeri ekleyin:
<input type="number" min="1" max="999" />