Tampaknya minlength
atribut untuk <input>
bidang tidak berfungsi.
Apakah ada atribut lain dalam HTML5 dengan bantuan yang saya dapat mengatur panjang minimal nilai untuk bidang?
Tampaknya minlength
atribut untuk <input>
bidang tidak berfungsi.
Apakah ada atribut lain dalam HTML5 dengan bantuan yang saya dapat mengatur panjang minimal nilai untuk bidang?
Jawaban:
Anda bisa menggunakan pattern
atribut . Iturequired
atribut juga diperlukan, jika tidak sebuah field input dengan nilai kosong akan dikeluarkan dari validasi kendala .
<input pattern=".{3,}" required title="3 characters minimum">
<input pattern=".{5,10}" required title="5 to 10 characters">
Jika Anda ingin membuat opsi untuk menggunakan pola "kosong, atau panjang minimum", Anda bisa melakukan hal berikut:
<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
, maka itu akan terus menunjukkan kepada Anda pesan kesalahan bahkan setelah Anda mengoreksi input. Anda dapat menggunakan onchange
metode berikut untuk mengatasi ini. oninvalid="this.setCustomValidity('Field must contain min. 5 characters')" onchange="try{setCustomValidity('')}catch(e){}"
Ada adalah sebuah minlength
properti di HTML5 spesifikasi sekarang, serta validity.tooShort
antarmuka.
Keduanya sekarang diaktifkan di versi terbaru dari semua browser modern. Untuk detailnya, lihat https://caniuse.com/#search=minlength .
minlength
atribut sejak versi 51 .
Berikut ini adalah solusi khusus HTML5 (jika Anda ingin minlength 5, maxlength 10 karakter validation)
http://jsfiddle.net/xhqsB/102/
<form>
<input pattern=".{5,10}">
<input type="submit" value="Check"></input>
</form>
title
atribut dengan pesan yang diperlukan.
pattern
Jawaban yang sama telah diberikan beberapa bulan sebelumnya . Bagaimana jawaban ini lebih baik?
Ya itu dia. Ini seperti maxlength. Dokumentasi W3.org: http://www.w3.org/TR/html5/forms.html#attr-fe-minlength
Jika minlength
tidak berfungsi, gunakan pattern
atribut seperti yang disebutkan oleh @ Pumbaa80 untuk input
tag.
Untuk textarea:
Untuk pengaturan maks; gunakan maxlength
dan untuk min buka tautan ini .
Anda akan menemukan di sini untuk maks dan min.
Saya menggunakan maxlength dan minlength dengan atau tanpa required
dan itu bekerja dengan baik untuk HTML5.
<input id="passcode" type="password" minlength="8" maxlength="10">
`
Atribut minLength (tidak seperti maxLength) tidak ada secara native di HTML5. Namun ada beberapa cara untuk memvalidasi bidang jika isinya kurang dari x karakter.
Contoh diberikan menggunakan jQuery di tautan ini: 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>
Bukan HTML5, tetapi tetap praktis: jika Anda menggunakan AngularJS , Anda dapat menggunakan ng-minlength
input dan textareas. Lihat juga Plunk ini .
data-ng-minlength
tetapi mengapa pengembang peduli dengan standar? > __>
data-ng-minlength
juga .
Solusi saya untuk textarea menggunakan jQuery dan menggabungkan HTML5 diperlukan validasi untuk memeriksa panjang minimum.
$(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
atribut sekarang banyak didukung di sebagian besar browser .
<input type="text" minlength="2" required>
Tapi, seperti fitur HTML5 lainnya, IE11 tidak ada dalam panorama ini. Jadi, jika Anda memiliki basis pengguna IE11 yang luas, pertimbangkan untuk menggunakan pattern
atribut HTML5 yang didukung hampir di seluruh papan di sebagian besar browser (termasuk IE11).
Untuk memiliki implementasi yang bagus dan seragam dan mungkin dapat dikembangkan atau dinamis (berdasarkan kerangka kerja yang menghasilkan HTML Anda), saya akan memilih pattern
atribut:
<input type="text" pattern=".{2,}" required>
Masih ada sedikit kegunaan menangkap saat menggunakan pattern
. Pengguna akan melihat pesan kesalahan / peringatan non-intuitif (sangat umum) saat menggunakan pattern
. Lihat jsfiddle ini atau di bawah ini:
<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>
Misalnya, di Chrome (tetapi serupa di sebagian besar browser), Anda akan mendapatkan pesan kesalahan berikut:
Please lengthen this text to 2 characters or more (you are currently using 1 character)
dengan menggunakan minlength
dan
Please match the format requested
dengan menggunakan pattern
.
Versi baru:
Itu memperluas penggunaan (textarea dan input) dan memperbaiki bug.
// 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);
}
}
}
Saya perhatikan bahwa kadang-kadang di chrome ketika pengisian otomatis aktif dan bidang adalah bidang dengan metode pembuatan browser autofill, ia memotong aturan validasi minlength, jadi dalam hal ini Anda harus menonaktifkan pengisian otomatis dengan atribut berikut:
autocomplete = "off"
<input autocomplete="new-password" name="password" id="password" type="password" placeholder="Password" maxlength="12" minlength="6" required />
Lihat http://caniuse.com/#search=minlength , beberapa browser mungkin tidak mendukung atribut ini.
Jika nilai "tipe" adalah salah satunya:
teks, email, pencarian, kata sandi, tel, atau url (peringatan: tidak termasuk nomor | tidak ada browser yang mendukung "tel" sekarang - 2017.10)
menggunakan atribut minlength (/ maxlength), itu menentukan jumlah karakter minimum.
misalnya.
<input type="text" minlength="11" maxlength="11" pattern="[0-9]*" placeholder="input your phone number">
atau gunakan atribut "pola":
<input type="text" pattern="[0-9]{11}" placeholder="input your phone number">
Jika "type" adalah angka , meskipun panjang minthougth (/ maxlength) tidak didukung, Anda dapat menggunakan min atribut (/ max) sebagai gantinya.
misalnya.
<input type="number" min="100" max="999" placeholder="input a three-digit number">
Saya menulis kode JavaScript ini, [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);
}
}
Jika ingin membuat perilaku ini,
selalu tampilkan awalan kecil pada bidang input atau pengguna tidak dapat menghapus awalan :
//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;
Dalam kasus saya, di mana saya memvalidasi yang paling manual dan menggunakan Firefox (43.0.4), minlength
dan validity.tooShort
sayangnya tidak tersedia.
Karena saya hanya perlu menyimpan panjang minimum untuk melanjutkan, cara yang mudah dan praktis adalah dengan menetapkan nilai ini ke atribut valid lainnya dari tag input. Dalam hal itu, Anda dapat menggunakan min
, max
dan step
properti dari [type = "angka"] input.
Daripada menyimpan batas-batas itu dalam array, lebih mudah menemukannya disimpan dalam input yang sama daripada mendapatkan id elemen yang cocok dengan indeks array.
Tambahkan nilai maks dan min. Anda dapat menentukan rentang nilai yang diizinkan:
<input type="number" min="1" max="999" />