2017-11-07 6 views
0

現在、私は大学のポータルに関するプロジェクトの正式な予約フォームを使ってウェブサイトを作ろうとしています。それは、私が時間を検証するために追加するまで、私のjavascript検証で動作するために使用されました。私が時間を検証するために追加するとき、そしてそれが削除されているときはいつでも、問題はうんざりしたボタンが機能していない。妥当性確認書式付きのウェブサイトを行う

HTMLJavaScriptの

/** Validation Form**/ 
 
function validateFormOnSubmit(contact) { 
 
    reason = ""; 
 
    reason += validateName(contact.name); 
 
    reason += validateEmail(contact.email); 
 
    reason += validatePhone(contact.phone); 
 
    reason += validateID(contact.id); 
 
    reason += validateWorkshop(contact.workshop); 
 
    reason += validateDate(contact.date); 
 

 
    console.log(reason); 
 
    if (reason.length > 0) { 
 

 
    return false; 
 
    } else { 
 
    return true; 
 
    } 
 
} 
 

 
/**Validate name**/ 
 

 
function validateName(name) { 
 
    var error = ""; 
 

 
    if (name.value.length == 0) { 
 
    document.getElementById('name-error').innerHTML = "Please enter your First name."; 
 
    var error = "1"; 
 
    } else { 
 
    document.getElementById('name-error').innerHTML = ''; 
 
    } 
 
    return error; 
 
} 
 

 
/**Validate email as required field and format**/ 
 

 
function trim(s) { 
 
    return s.replace(/^\s+|\s+$/, ''); 
 
} 
 

 
function validateEmail(email) { 
 
    var error = ""; 
 
    var temail = trim(email.value); 
 
    var emailFilter = /^[^@][email protected][^@.]+\.[^@]*\w\w$/; 
 
    var illegalChars = /[\(\)\<\>\,\;\:\\\"\[\]]/; 
 

 
    if (email.value == "") { 
 
    document.getElementById('email-error').innerHTML = "Please enter your Email address."; 
 
    var error = "2"; 
 
    } else if (!emailFilter.test(temail)) { /**test email for illegal characters**/ 
 
    document.getElementById('email-error').innerHTML = "Please enter a valid email address."; 
 
    var error = "3"; 
 
    } else if (email.value.match(illegalChars)) { 
 
    var error = "4"; 
 
    document.getElementById('email-error').innerHTML = "Email contains invalid characters."; 
 
    } else { 
 
    document.getElementById('email-error').innerHTML = ''; 
 
    } 
 
    return error; 
 
} 
 

 
/**Validate phone for required and format**/ 
 

 
function validatePhone(phone) { 
 
    var error = ""; 
 
    var stripped = phone.value.replace(/[\(\)\.\-\ ]/g, ''); 
 

 
    if (phone.value == "") { 
 
    document.getElementById('phone-error').innerHTML = "Please enter your phone number"; 
 
    var error = '6'; 
 
    } else if (isNaN(parseInt(stripped))) { 
 
    var error = "5"; 
 
    document.getElementById('phone-error').innerHTML = "The phone number contains illegal characters."; 
 
    } else if (stripped.length < 10) { 
 
    var error = "6"; 
 
    document.getElementById('phone-error').innerHTML = "The phone number is too short."; 
 
    } else { 
 
    document.getElementById('phone-error').innerHTML = ''; 
 
    } 
 
    return error; 
 
} 
 

 
/**Validate student ID**/ 
 

 
function validateID(id) { 
 
    var error = ""; 
 

 
    if (id.value.length == 0) { 
 
    document.getElementById('id-error').innerHTML = "Please enter your ID."; 
 
    var error = "1"; 
 
    } else { 
 
    document.getElementById('id-error').innerHTML = ''; 
 
    } 
 
    return error; 
 
} 
 

 
/**Validate workshop select**/ 
 

 
function validateWorkshop(workshop) { 
 
    if ((contact.workshop[0].checked == false) && (contact.workshop[1].checked == false) && (contact.workshop[2].checked == false) && (contact.workshop[3].checked == false) && (contact.workshop[4].checked == false) && (contact.workshop[5].checked == false)) { 
 
    document.getElementById('workshop-error').innerHTML = "You must select a workshop"; 
 
    var error = "2"; 
 
    } else { 
 
    document.getElementById('workshop-error').innerHTML = ''; 
 
    } 
 
    return error; 
 
} 
 

 
/**Validate date**/ 
 

 
function validateDate(date) { 
 
    var error = ""; 
 

 
    if (date.value.length == 0) { 
 
    document.getElementById('date-error').innerHTML = "Please enter a date."; 
 
    var error = "1"; 
 
    } else { 
 
    document.getElementById('date-error').innerHTML = ''; 
 
    } 
 
    return error; 
 
}
<header> 
 
    <center><img src="portal2.png" style="width:1000px;height:100px;"></center> 
 
    <p align="right"> 
 
    <a href=".pdf" download> 
 
     <font color="darkblue"> 
 
     <font size="5"><b>Report</font></b></a> 
 
    </p> 
 
</header> 
 
<hr class="line"> 
 
<div class="topnav" id="myTopnav"> 
 
    <a href="Index.html">Home</a> 
 
    <a href="Timetable.html">Timetable</a> 
 
    <a href="workshops.html">Book a workshop</a> 
 
    <a href="contact.html">Contact</a> 
 
</div> 
 
<br> 
 
<br> 
 
<form id="contact" name="contact" onsubmit="return validateFormOnSubmit(this)" action="thankyou.html" method="post" target="_blank"> 
 
    <div> 
 
    <label><u>First Name:</u></label><br> 
 
    <br> 
 
    <input type="text" name="name" id="name" tabindex="1" autofocus /> 
 
    <div id="name-error" class="error"></div> 
 
    </div> 
 
    <br> 
 
    <div> 
 
    <label><u>Email:</u></label><br> 
 
    <br> 
 
    <input type="email" name="email" id="email" tabindex="2" autofocus /> 
 
    <div id="email-error" class="error"></div> 
 
    </div> 
 
    <br> 
 
    <div> 
 
    <label><u>Phone:</u></label><br> 
 
    <br> 
 
    <input type="tel" name="phone" id="phone" tabindex="3" autofocus /> 
 
    <div id="phone-error" class="error"></div> 
 
    </div> 
 
    <br> 
 
    <div> 
 
    <label><u>Student ID:</u></label><br> 
 
    <br> 
 
    <input type="text" name="id" id="id" tabindex="4" autofocus /> 
 
    <div id="id-error" class="error"></div> 
 
    </div> 
 
    <br> 
 
    <br> 
 
    <div> 
 
    <label><u>Please Select a workshop to book:</u></label> 
 
    <br> 
 
    <br> 
 
    <input type="radio" name="workshop" id="art" tabindex="5" autofocus />Art Workshop <br> 
 
    <input type="radio" name="workshop" id="computer" tabindex="6" autofocus />Computer Workshop <br> 
 
    <input type="radio" name="workshop" id="film" tabindex="7" autofocus />Film Production Workshop <br> 
 
    <input type="radio" name="workshop" id="music" tabindex="8" autofocus />Music Performance Workshop <br> 
 
    <input type="radio" name="workshop" id="journalism" tabindex="9" autofocus />Journalism Workshop <br> 
 
    <input type="radio" name="workshop" id="sociology" tabindex="10" autofocus />Sociology Workshop <br> 
 
    <div id="workshop-error" class="error"></div> 
 
    </div> 
 
    <br> 
 
    <p><u>Enter the date you want to book the workshop:</u></p> 
 
    <input type="date" name="date" id="date" min="2017-10-01" tabindex="11" autofocus /> 
 
    <div id="date-error" class="error"></div> 
 
    <br> 
 
    <br> 
 
    <div> 
 
    <button type="submit" name="submit" id="submit" tabindex="12">Sumbit</button> 
 
    </div> 
 
</form> 
 

 
<br> 
 
<br> 
 
<footer>University. Copyright © 2015 
 
    <br> 
 
    <p id="demo"></p> 
 
    <script> 
 
    document.getElementById("demo").innerHTML = Date(); 
 
    </script> 
 
    <br> 
 
</footer>

任意の提案ですか?

+0

ここ短縮HTMLと[JSFiddle](https://jsfiddle.net/a5qsrf70/1/)です。 – Sun

答えて

0

私が見ることができるように、問題はvalidateDateではなくvalidateWorkshopで発生します。ワークショップを選択せず​​に空白のフォームを提出しようとすると、reason.lengthの値は5になります。ただし、ワークショップを選択した場合、reason.lengthは13になります。

妥当ではないが、私はちょうどvarエラー= ""を追加しました。 validateWorkshopの初めに。

/** Validation Form**/ 
 
function validateFormOnSubmit(contact) { 
 
    reason = ""; 
 
    reason += validateName(contact.name); 
 
    reason += validateEmail(contact.email); 
 
    reason += validatePhone(contact.phone); 
 
    reason += validateID(contact.id); 
 
    reason += validateWorkshop(contact.workshop); 
 
    reason += validateDate(contact.date); 
 

 
    console.log(reason); 
 
    if (reason.length > 0) { 
 

 
    return false; 
 
    } else { 
 
    return true; 
 
    } 
 
} 
 

 
/**Validate name**/ 
 

 
function validateName(name) { 
 
    var error = ""; 
 

 
    if (name.value.length == 0) { 
 
    document.getElementById('name-error').innerHTML = "Please enter your First name."; 
 
    var error = "1"; 
 
    } else { 
 
    document.getElementById('name-error').innerHTML = ''; 
 
    } 
 
    return error; 
 
} 
 

 
/**Validate email as required field and format**/ 
 

 
function trim(s) { 
 
    return s.replace(/^\s+|\s+$/, ''); 
 
} 
 

 
function validateEmail(email) { 
 
    var error = ""; 
 
    var temail = trim(email.value); 
 
    var emailFilter = /^[^@][email protected][^@.]+\.[^@]*\w\w$/; 
 
    var illegalChars = /[\(\)\<\>\,\;\:\\\"\[\]]/; 
 

 
    if (email.value == "") { 
 
    document.getElementById('email-error').innerHTML = "Please enter your Email address."; 
 
    var error = "2"; 
 
    } else if (!emailFilter.test(temail)) { /**test email for illegal characters**/ 
 
    document.getElementById('email-error').innerHTML = "Please enter a valid email address."; 
 
    var error = "3"; 
 
    } else if (email.value.match(illegalChars)) { 
 
    var error = "4"; 
 
    document.getElementById('email-error').innerHTML = "Email contains invalid characters."; 
 
    } else { 
 
    document.getElementById('email-error').innerHTML = ''; 
 
    } 
 
    return error; 
 
} 
 

 
/**Validate phone for required and format**/ 
 

 
function validatePhone(phone) { 
 
    var error = ""; 
 
    var stripped = phone.value.replace(/[\(\)\.\-\ ]/g, ''); 
 

 
    if (phone.value == "") { 
 
    document.getElementById('phone-error').innerHTML = "Please enter your phone number"; 
 
    var error = '6'; 
 
    } else if (isNaN(parseInt(stripped))) { 
 
    var error = "5"; 
 
    document.getElementById('phone-error').innerHTML = "The phone number contains illegal characters."; 
 
    } else if (stripped.length < 10) { 
 
    var error = "6"; 
 
    document.getElementById('phone-error').innerHTML = "The phone number is too short."; 
 
    } else { 
 
    document.getElementById('phone-error').innerHTML = ''; 
 
    } 
 
    return error; 
 
} 
 

 
/**Validate student ID**/ 
 

 
function validateID(id) { 
 
    var error = ""; 
 

 
    if (id.value.length == 0) { 
 
    document.getElementById('id-error').innerHTML = "Please enter your ID."; 
 
    var error = "1"; 
 
    } else { 
 
    document.getElementById('id-error').innerHTML = ''; 
 
    } 
 
    return error; 
 
} 
 

 
/**Validate workshop select**/ 
 

 
function validateWorkshop(workshop) { 
 
var error = ""; 
 
    if ((contact.workshop[0].checked == false) && (contact.workshop[1].checked == false) && (contact.workshop[2].checked == false) && (contact.workshop[3].checked == false) && (contact.workshop[4].checked == false) && (contact.workshop[5].checked == false)) { 
 
    document.getElementById('workshop-error').innerHTML = "You must select a workshop"; 
 
    var error = "2"; 
 
    } else { 
 
    document.getElementById('workshop-error').innerHTML = ''; 
 
    } 
 
    return error; 
 
} 
 

 
/**Validate date**/ 
 

 
function validateDate(date) { 
 
    var error = ""; 
 

 
    if (date.value.length == 0) { 
 
    document.getElementById('date-error').innerHTML = "Please enter a date."; 
 
    var error = "1"; 
 
    } else { 
 
    document.getElementById('date-error').innerHTML = ''; 
 
    } 
 
    return error; 
 
}
<header> 
 
    <center><img src="portal2.png" style="width:1000px;height:100px;"></center> 
 
    <p align="right"> 
 
    <a href=".pdf" download> 
 
     <font color="darkblue"> 
 
     <font size="5"><b>Report</font></b></a> 
 
    </p> 
 
</header> 
 
<hr class="line"> 
 
<div class="topnav" id="myTopnav"> 
 
    <a href="Index.html">Home</a> 
 
    <a href="Timetable.html">Timetable</a> 
 
    <a href="workshops.html">Book a workshop</a> 
 
    <a href="contact.html">Contact</a> 
 
</div> 
 
<br> 
 
<br> 
 
<form id="contact" name="contact" onsubmit="return validateFormOnSubmit(this)" action="thankyou.html" method="post" target="_blank"> 
 
    <div> 
 
    <label><u>First Name:</u></label><br> 
 
    <br> 
 
    <input type="text" name="name" id="name" tabindex="1" autofocus /> 
 
    <div id="name-error" class="error"></div> 
 
    </div> 
 
    <br> 
 
    <div> 
 
    <label><u>Email:</u></label><br> 
 
    <br> 
 
    <input type="email" name="email" id="email" tabindex="2" autofocus /> 
 
    <div id="email-error" class="error"></div> 
 
    </div> 
 
    <br> 
 
    <div> 
 
    <label><u>Phone:</u></label><br> 
 
    <br> 
 
    <input type="tel" name="phone" id="phone" tabindex="3" autofocus /> 
 
    <div id="phone-error" class="error"></div> 
 
    </div> 
 
    <br> 
 
    <div> 
 
    <label><u>Student ID:</u></label><br> 
 
    <br> 
 
    <input type="text" name="id" id="id" tabindex="4" autofocus /> 
 
    <div id="id-error" class="error"></div> 
 
    </div> 
 
    <br> 
 
    <br> 
 
    <div> 
 
    <label><u>Please Select a workshop to book:</u></label> 
 
    <br> 
 
    <br> 
 
    <input type="radio" name="workshop" id="art" tabindex="5" autofocus />Art Workshop <br> 
 
    <input type="radio" name="workshop" id="computer" tabindex="6" autofocus />Computer Workshop <br> 
 
    <input type="radio" name="workshop" id="film" tabindex="7" autofocus />Film Production Workshop <br> 
 
    <input type="radio" name="workshop" id="music" tabindex="8" autofocus />Music Performance Workshop <br> 
 
    <input type="radio" name="workshop" id="journalism" tabindex="9" autofocus />Journalism Workshop <br> 
 
    <input type="radio" name="workshop" id="sociology" tabindex="10" autofocus />Sociology Workshop <br> 
 
    <div id="workshop-error" class="error"></div> 
 
    </div> 
 
    <br> 
 
    <p><u>Enter the date you want to book the workshop:</u></p> 
 
    <input type="date" name="date" id="date" min="2017-10-01" tabindex="11" autofocus /> 
 
    <div id="date-error" class="error"></div> 
 
    <br> 
 
    <br> 
 
    <div> 
 
    <button type="submit" name="submit" id="submit" tabindex="12">Sumbit</button> 
 
    </div> 
 
</form> 
 

 
<br> 
 
<br> 
 
<footer>University. Copyright © 2015 
 
    <br> 
 
    <p id="demo"></p> 
 
    <script> 
 
    document.getElementById("demo").innerHTML = Date(); 
 
    </script> 
 
    <br> 
 
</footer>

+0

wow..andは間違いを見つけるのに3時間かかってしまい、見つけられませんでした。あなたは人生の節約者です。どうもありがとうございました。 – Onix

+0

あなたは大歓迎です。あなたのために働いた場合、upvoteと正しい答えとしてマークすることを忘れないでください –

1

requiredでこのようなことを行う必要があります。

<input type="email" required> 

注:テキスト、検索、URL、電話、電子メール、パスワード、日付ピッカー、番号、チェックボックス、ラジオ、およびファイル:必要な属性は、以下の入力タイプで動作します。

https://www.w3schools.com/tags/att_input_required.asp

patternが存在します。たとえば、6文字のみを許可する場合は、

<input type="text" pattern="[A-Za-z]{6}" required> 

ここには、詳細情報を示すstackoverflow questionがあります。

+0

すべてに設定されています。 onsubmit = "..."とtarget = "_ blank"を削除してください。ターゲットはaction = "thankyou.html"です。 HTMLの検証はこちらから行ってください。https://www.freeformatter.com/html-validator.html -Peter Leger – Onix

+0

多くの点を気に入ってください。ありがとうございます – Onix

+0

あなたはようこそ! – Sun

関連する問題