指定の正規表現、文字数以外を記入するとアラートが表示されるようにしているつもりです。。。
文字数制限のほうはきちんと作用してくれるのですが、半角数字指定の方がきちんと表示されてくれません。
どこが間違えているのか教えていただきたいです。
よろしくお願い致します!
html
1<html> 2 <head> 3 <link href="css/index.css" rel="stylesheet" type="text/css"> 4 </head> 5 <body> 6 <form action="login.php" method="post" class="checkform"> 7 <p> 8 <input type="password" name="pass" size="20" placeholder="(例)10" class="password" required > 9 <span class="alertarea"></span> 10 </p> 11 <input type="submit" value="submit" name="submit"> 12 </form> 13//ここに下記のjavascript 14 </body> 15</html> 16
javascript
1 <script type="text/javascript"> 2 document.addEventListener('DOMContentLoaded', function() { 3 4 // 半角数字3文字未満の入力チェック 始まり 5 var targets = document.getElementsByClassName('password'); 6 for (var i=0 ; i<targets.length ; i++) { 7 // 文字が入力されたタイミングでチェックする: 8 targets[i].oninput = function () { 9 var alertelement = this.parentNode.getElementsByClassName('alertarea'); 10 11 // 半角数字以外の文字があるかどうかを判断 12 if(( this.value != '') && ( this.value.match( /^[0-9]/ ))) { 13 // ▼英数字以外の文字があれば 14 if( alertelement[0] ) { alertelement[0].innerHTML = "入力には半角数字だけが使えます。"; } 15 this.style.border = "2px solid red"; 16 } 17 // 空白を除いた入力文字数が2文字よりも多いかどうかを判断 18 if( this.value.trim().length > 2 ) { 19 // 空白を除いた入力文字数が3文字よりも大きければ 20 if( alertelement[0] ) { alertelement[0].innerHTML = "入力文字数が多すぎます。2文字以下を入力して下さい。"; } 21 this.style.border = "2px solid red"; 22 } 23 else { 24 // 何も入力がないか、または半角数字2文字以下しかないなら 25 if( alertelement[0] ) { alertelement[0].innerHTML = ""; } 26 this.style.border = "1px solid black"; 27 } 28 } 29 } 30 // 半角数字3文字未満の入力チェック 終わり 31 32 }); 33 </script> 34
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/06/04 08:12