テキスト入力で パターン属性 を数値に限定して取得できません。 javascript正規表現リスト によると、[d]または[0-9]で実行できます。しかし
<input dir="ltr" type="text" title="Enter numbers only." pattern="[\d]{9}" id="uid" name="1" placeholder="Enter UID" required="'required'" class="required placeholder" minlength="9" maxlength="9" autocomplete="off" />
(どのブラウザでも)私には機能しません。私は次のようなjs検証を追加する必要があります( this post に基づいて、簡単にするためにこのルートに進むことを決定しました):
HTML:
onkeypress='return isNumberKey(event)'
js:
function isNumberKey(evt){
var charCode = (evt.which) ? evt.which : event.keyCode
if (charCode > 31 && (charCode < 48 || charCode > 57))
return false;
return true;
}
私は主に、パターン属性を機能させる方法があるかどうかを知りたいです。ただし、これにベストプラクティスルートを使用しているかどうかについてもコメントしてください。 HTML5を使いたくない<input type="number"/>
まだ十分にサポートされていないため。
pattern
属性の検証は、フィールドへの誤った情報の書き込みを防止しませんが、フォームの送信を防止します。この要素には、送信中に検証が失敗したときに呼び出されるoninvalid
イベントもあります。
または、CSSセレクター:valid
および:invalid
を使用して、即座に視覚的なフィードバックを提供することもできます。
両方を示すフィドル(コメントからのジェリーのフィドルに基づく): http://jsfiddle.net/bHWcu/1/
<form onsubmit="alert('Submitted');">
<input dir="ltr" type="text" title="Enter numbers only." pattern="[\d]{9}" id="uid" name="1" placeholder="Enter UID" required="'required'" class="required placeholder" maxlength="9" autocomplete="off" />
<input type="submit" value="Submit" />
</form>
クライアント側の検証は、ユーザーエクスペリエンスを向上させるための迅速なフィードバックにのみ使用してください。クライアント側の検証は簡単にだまされる可能性があるため、実際の検証は常にサーバー側で行う必要があります。