###前提・実現したいこと
フォームの項目が未入力の時に送信したらその箇所に対してエラーの文字が出るようにしたいと思っています。
また、メールアドレスと名前の欄、両方にエラーの文字が出ていたとして、どちらかだけを入力して送信した際、送信は出来ないのですが、入力した箇所のエラー文字は消える。
という動きにしたいです。
###発生している問題・エラーメッセージ
メールアドレス、名前の項目を未入力の状態にして送信→未入力の箇所にエラーの文字が出る。
メールアドレスだけを入力して、もう一度送信を押すと、メールアドレスは入力されているため、エラーの文字が消えます。
ですが、同様の操作を名前の箇所で行うとエラーの文字が消えてくれません。
つまり、
メルアド、名前の項目共に未入力→両方共エラー文字が出る→名前の項目のみを入力して送信→名前の項目のエラーが消えてくれない。
という問題が発生しております。
###該当のソースコード
HTML
1<form id="register" action="#"> 2 <th>メールアドレス<span id="mailerror"></span></th><br> 3 <input type="text" name="mail"><br><br> 4 5 <th>名前<span id="nameerror"></span></th><br> 6 <input type="text" name="namae"><br><br> 7 8 <input type="submit" value="送信"> 9</form>
JavaScript
1var mailE = ' (メールアドレスを入力して下さい)'; 2var nameE = ' (名前を入力して下さい)'; 3document.getElementById('register').onsubmit = function() { 4 var mailCheck = document.getElementById('register').mail.value; 5 var nameCheck = document.getElementById('register').namae.value; 6 //入力してあればtrue 未入力ならfalse 7 var MC = jg(mailCheck); 8 var NC = jg(nameCheck); 9 10 if ( !MC && !NC ) { 11 document.getElementById('mailerror').textContent = mailE; 12 document.getElementById('nameerror').textContent = nameE; 13 return false; 14 } 15 16 if ( !MC ) { 17 document.getElementById('mailerror').textContent = mailE; 18 return false; 19 } else { 20 document.getElementById('mailerror').textContent = ""; 21 } 22 if ( !NC ) { 23 document.getElementById('nameerror').textContent = nameE; 24 return false; 25 } else { 26 document.getElementById('nameerror').textContent = ''; 27 } 28} 29function jg(mn) { 30 var mn; 31 if ( mn.length != 0 ) { 32 mn = true; 33 return mn; 34 } else { 35 mn = false; 36 return mn; 37 } 38} 39
JavaScriptの
JavaScript
1if ( !MC ) { 2 document.getElementById('mailerror').textContent = mailE; 3 return false; 4 } else { 5 document.getElementById('mailerror').textContent = ""; 6 } 7 if ( !NC ) { 8 document.getElementById('nameerror').textContent = nameE; 9 return false; 10 } else { 11 document.getElementById('nameerror').textContent = ''; 12 }
ここのif文の上の方しか動かないようなのですが、それの理由がわかりません。
これの解決方法をご教示いただきたいと思っております。
よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/07/29 07:28