フィールドの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)">
現在、 HTML5 仕様には、インターフェイスと同様にプロパティminlength
があります。validity.tooShort
現在、最新のすべてのブラウザーの最近のバージョンで両方が有効になっています。詳細については、https://caniuse.com/#search=minlengthを参照してください。
これは HTML5 のみのソリューションです (minlength 5、maxlength 10 文字の検証が必要な場合)
http://jsfiddle.net/xhqsB/102/
<form>
<input pattern=".{5,10}">
<input type="submit" value="Check"></input>
</form>
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>
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>
New version:
It extends the use (textarea and input) and fixes bugs.
// 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);
}
}
}
私の場合、最も手動で Firefox (43.0.4) を使用して検証しており、minlength
残念validity.tooShort
ながら利用できません。
最小限の長さを保存するだけで処理が進むため、この値を入力タグの別の有効な属性に割り当てるのが簡単で便利な方法です。その場合、[type="number"] 入力からmin
、max
、およびプロパティを使用できます。step
これらの制限を配列に格納するよりも、要素 ID を取得して配列インデックスと一致させるよりも、同じ入力に格納されている方が簡単に見つけることができます。