お問い合わせフォームの必須入力の制御をJavaScriptで作っています。
html
1 <div> 2 <label>氏名</label> 3 <input type="text" id="name" name="name"> 4 </div>
JavaScript
1 if(document.form.name.value == ""){ 2 errorElement(document.form.name, "必須項目に入力されていません"); 3 flag = false; 4 }
このコードの2行目errorElement(document.form.name
のname
にtest.name
のような.
が入った名前を使用するにはどうすればよいでしょうか?
やりたいことのイメージ:
html
1 <div> 2 <label>氏名</label> 3 <input type="text" name="test.name"> 4 </div>
JavaScript
1 if(document.form.test.name.value == ""){ 2 errorElement(document.form.test.name, "必須項目に入力されていません"); 3 flag = false; 4 }
追記情報
php
1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4<meta charset="UTF-8"> 5<title>お問い合わせフォーム</title> 6<link rel="stylesheet" href="style.css"> 7<script type="text/javascript" src="contact.js"></script> 8</head> 9<body> 10<div><h1>Company Name</h1></div> 11<div><h2>お問い合わせ</h2></div> 12<div> 13 <form action="confirm.php" method="post" name="form" onsubmit="return validate()"> 14 <h1 class="contact-title">お問い合わせ 内容入力</h1> 15 <p>お問い合わせ内容をご入力の上、「確認画面へ」ボタンをクリックしてください。</p> 16 <div> 17 <div> 18 <label>お名前<span>必須</span></label> 19 <input type="text" name="test.name" placeholder="例)山田太郎" value=""> 20 </div> 21 <div> 22 <label>ふりがな<span>必須</span></label> 23 <input type="text" name="test.furigana" placeholder="例)やまだたろう" value=""> 24 </div> 25 <div> 26 <label>メールアドレス<span>必須</span></label> 27 <input type="text" name="test.email" placeholder="例)guest@example.com" value=""> 28 </div> 29 <div> 30 <label>電話番号<span>必須</span></label> 31 <input type="text" name="test.tel" placeholder="例)0000000000" value=""> 32 </div> 33 <div> 34 <label>性別<span>必須</span></label> 35 <input type="radio" name="sex" value="男性" checked> 男性 36 <input type="radio" name="sex" value="女性"> 女性 37 </div> 38 <div> 39 <label>お問い合わせ項目<span>必須</span></label> 40 <select name="item"> 41 <option value="">お問い合わせ項目を選択してください</option> 42 <option value="ご質問・お問い合わせ">ご質問・お問い合わせ</option> 43 <option value="ご意見・ご感想">ご意見・ご感想</option> 44 </select> 45 </div> 46 <div> 47 <label>お問い合わせ内容<span>必須</span></label> 48 <textarea name="content" rows="5" placeholder="お問合せ内容を入力"></textarea> 49 </div> 50 </div> 51 <button type="submit">確認画面へ</button> 52 </form> 53</div> 54</body> 55</html>
JavaScript
1var validate = function() { 2 3 var flag = true; 4 5 removeElementsByClass("error"); 6 removeClass("error-form"); 7 8 // お名前の入力をチェック 9 if(document.form["test.name"].value == ""){ 10 errorElement(document.form["test.name"], "お名前が入力されていません"); 11 flag = false; 12 } 13 14 // ふりがなの入力をチェック 15 if(document.form["test.furigana"].value == ""){ 16 errorElement(document.form["test.furigana"], "ふりがなが入力されていません"); 17 flag = false; 18 } else { 19 // メールアドレスの形式をチェック 20 if(!validateKana(document.form["test.furigana"].value)){ 21 errorElement(document.form["test.furigana"], "ひらがな以外の文字が入っています"); 22 flag = false; 23 } 24 } 25 26 // メールアドレスの入力をチェック 27 if(document.form["test.email"].value == ""){ 28 errorElement(document.form["test.email"], "メールアドレスが入力されていません"); 29 flag = false; 30 } else { 31 // メールアドレスの形式をチェック 32 if(!validateMail(document.form["test.email"].value)){ 33 errorElement(document.form["test.email"], "メールアドレスが正しくありません"); 34 flag = false; 35 } 36 } 37 38 // 電話番号の入力をチェック 39 if(document.form.tel["test.tel"] == ""){ 40 errorElement(document.form["test.tel"], "電話番号が入力されていません"); 41 flag = false; 42 } else { 43 // 電話番号の形式をチェック 44 if(!validateNumber(document.form["test.tel"].value)){ 45 errorElement(document.form["test.tel"], "半角数字のみを入力してください"); 46 flag = false; 47 } else { 48 if(!validateTel(document.form["test.tel"].value)){ 49 errorElement(document.form["test.tel"], "電話番号が正しくありません"); 50 flag = false; 51 } 52 } 53 } 54 55 // お問い合わせ項目の選択をチェック 56 if(document.form["test.item"].value == ""){ 57 errorElement(document.form["test.item"], "お問い合わせ項目が選択されていません"); 58 flag = false; 59 } 60 61 // お問い合わせ内容の入力をチェック 62 if(document.form["test.content"].value == ""){ 63 errorElement(document.form["test.content"], "お問い合わせ内容が入力されていません"); 64 flag = false; 65 } 66 67 return flag; 68} 69 70 71 72var errorElement = function(form, msg) { 73 form.className = "error-form"; 74 var newElement = document.createElement("div"); 75 newElement.className = "error"; 76 var newText = document.createTextNode(msg); 77 newElement.appendChild(newText); 78 form.parentNode.insertBefore(newElement, form.nextSibling); 79} 80 81 82var removeElementsByClass = function(className){ 83 var elements = document.getElementsByClassName(className); 84 while (elements.length > 0){ 85 elements[0].parentNode.removeChild(elements[0]); 86 } 87} 88 89var removeClass = function(className){ 90 var elements = document.getElementsByClassName(className); 91 while (elements.length > 0) { 92 elements[0].className = ""; 93 } 94} 95 96var validateMail = function (val){ 97 if (val.match(/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/)==null) { 98 return false; 99 } else { 100 return true; 101 } 102} 103 104 105var validateNumber = function (val){ 106 if (val.match(/[^0-9]+/)) { 107 return false; 108 } else { 109 return true; 110 } 111} 112 113 114var validateTel = function (val){ 115 if (val.match(/^[0-9-]{6,13}$/) == null) { 116 return false; 117 } else { 118 return true; 119 } 120} 121 122 123var validateKana = function (val){ 124 if (val.match(/^[ぁ-ん]+$/) == null) { 125 return false; 126 } else { 127 return true; 128 } 129} 130
回答3件
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
2022/05/15 01:24
2022/05/15 01:37
2022/05/15 02:09
2022/05/15 03:24 編集