2016-01-07 4 views
0

У меня есть две отдельные кнопки в форме html, которые проверяют входные данные и затем отправляют форму соответственно. Я хочу объединить эти кнопки вместе, чтобы письмо генерировалось только тогда, когда форма была проверена правильно. Я включил мой код ниже, и любые решения или идеи больш были бы оценены:Javascript, только отправьте электронное письмо, когда форма будет правильно проверена

// JavaScript Document 
 

 
function ValidateForm() { 
 
\t //Sets variables for testing the inputs by obtaining the values entered into the field 
 
\t var firstName = document.getElementById('txtFirstName').value; 
 
\t var lastName = document.getElementById('txtLastName').value; 
 
\t var DOB = document.getElementById('txtDob').value; 
 
\t var pattern =/^([0-9]{2})\/([0-9]{2})\/([0-9]{4})$/; 
 
\t //This pattern acts as a template for the DOB field to follow 
 
\t var email = document.getElementById('txtEmail').value; 
 
\t var atpos = email.indexOf('@'); 
 
\t var dotpos = email.lastIndexOf('.'); 
 
\t //These variables check for the placement of the @ and . inside the email input 
 
\t var feedback = document.getElementById('txtFeedback').value; 
 
\t var invalidForm = 0; 
 

 
\t if (firstName == "") { 
 
\t \t document.getElementById('txtFirstName').className = "errorStyle"; 
 
\t \t document.getElementById('errFirstName').innerHTML = \t "Must Enter a Valid First Name"; \t 
 
\t \t invalidForm=1; 
 
\t } 
 
\t else if (firstName.length >15) { 
 
\t \t document.getElementById('txtFirstName').className = "errorStyle"; 
 
\t \t document.getElementById('errFirstName').innerHTML = "Must be Less than 15 Characters"; 
 
\t \t invalidForm=1; \t 
 
\t } 
 
\t else if (isNaN(firstName) == false){ //checks whether the input is a umber or not 
 
\t \t document.getElementById('txtFirstName').className = "errorStyle"; 
 
\t \t document.getElementById('errFirstName').innerHTML = "Letters only Please"; 
 
\t \t invalidForm=1; 
 
\t } 
 
\t else if (firstName.length <3) { 
 
\t \t document.getElementById('txtFirstName').className = "errorStyle"; 
 
\t \t document.getElementById('errFirstName').innerHTML = "Must be More than 3 Characters"; 
 
\t \t invalidForm=1; \t 
 
\t } 
 
\t else { 
 
\t \t document.getElementById('txtFirstName').className = "defaultStyle"; 
 
\t \t document.getElementById('errFirstName').innerHTML = ""; \t 
 
\t } 
 
\t 
 
\t if (lastName == "") { 
 
\t \t document.getElementById('txtLastName').className = "errorStyle"; 
 
\t \t document.getElementById('errLastName').innerHTML = "Must Enter a Valid Surname"; 
 
\t \t invalidForm=1; \t 
 
\t } \t 
 
\t else if (lastName.length >15) { 
 
\t \t document.getElementById('txtLastName').className = "errorStyle"; 
 
\t \t document.getElementById('errLastName').innerHTML = "Must be Less than 15 Characters"; 
 
\t \t invalidForm=1; 
 
\t } \t 
 
\t else if (isNaN(lastName) == false){ 
 
\t \t document.getElementById('txtFirstName').className = "errorStyle"; 
 
\t \t document.getElementById('errFirstName').innerHTML = "Letters only Please"; 
 
\t \t invalidForm=1; 
 
\t } 
 
\t else if (lastName.length <3) { 
 
\t \t document.getElementById('txtLastName').className = "errorStyle"; 
 
\t \t document.getElementById('errLastName').innerHTML = "Must be More than 3 Characters"; 
 
\t \t invalidForm=1; \t 
 
\t } \t 
 
\t else { 
 
\t \t document.getElementById('txtLastName').className = "defaultStyle"; 
 
\t \t document.getElementById('errLastName').innerHTML = ""; \t 
 
\t } 
 
\t 
 
\t if (DOB == null || DOB == "" || !pattern.test(DOB)) { 
 
\t //tests whether DOB field is empty, blank, or doesn't fir the template set as seen above in the variables 
 
\t \t document.getElementById('txtDob').className = "errorStyle"; 
 
\t \t document.getElementById('errDob').innerHTML = "Must Enter a valid Date of Birth (DD/MM/YYYY)"; 
 
\t \t invalidForm=1; 
 
\t } 
 
\t else { 
 
\t \t document.getElementById('txtDob').className = "defaultStyle"; 
 
\t \t document.getElementById('errDob').innerHTML =""; \t 
 
\t } 
 
\t 
 
\t if (email =="") { 
 
\t \t document.getElementById('txtEmail').className = "errorStyle"; 
 
\t \t document.getElementById('errEmail').innerHTML = "Must Enter an Email"; 
 
\t \t invalidForm=1; \t 
 
\t } 
 
\t else if (atpos<1 || dotpos<atpos || dotpos+2 == email.length) { 
 
\t \t document.getElementById('txtEmail').className ="errorStyle"; 
 
\t \t document.getElementById('errEmail').innerHTML ="Must Enter a Valid Email"; 
 
\t \t invalidForm=1; 
 
\t } 
 
\t else { 
 
\t \t document.getElementById('txtEmail').className ="defaultStyle"; 
 
\t \t document.getElementById('errEmail').innerHTML = ""; 
 
\t } 
 
\t 
 
\t if (feedback == "") { 
 
\t \t document.getElementById('txtFeedback').className = "errorStyle"; 
 
\t \t document.getElementById('errFeedback').innerHTML = "Must Enter Some Feedback"; 
 
\t \t invalidForm=1; \t 
 
\t } 
 
\t else if (feedback.length > 1000) { 
 
\t \t document.getElementById('txtFeedback').className = "errorStyle"; 
 
\t \t document.getElementById('errFeedback').innerHTML = "Must Enter Some Feedback that does not exceed 200 characters"; 
 
\t \t invalidForm=1; 
 
\t } 
 
\t else { 
 
\t \t document.getElementById('txtFeedback').className ="defaultStyle"; 
 
\t \t document.getElementById('errFeedback').innerHTML = ""; 
 
\t } 
 
\t \t 
 
\t if (invalidForm ==0) { 
 
\t \t alert("Your Information that has been entered is valid and ready to send, simply click the Submit button to do so."); 
 
\t } 
 
\t 
 
}
<form id="myForm" action="MAILTO:[email protected]; [email protected]?Subject=Belfast%20Met%20Sights%20and%20Sounds%20Feedback" method="post" enctype="text/plain"> 
 
      \t <fieldset style="width:85%; margin:auto;"> 
 
       <legend>Your Details</legend> 
 
       <img src="../Images/Submit-Query.gif" width="30%" alt="Submit Your Images" style="display:block; float:right; padding-right:20px;"/> 
 
      \t \t <p class="myText">Title:  
 
         <select name="Title " id="txtTitle"> 
 
         <option value=" Mr">Mr</option> 
 
         <option value=" Mrs">Mrs</option> 
 
         <option value=" Ms">Ms</option> 
 
         <option value=" Miss">Miss</option> 
 
         <option value=" Dr">Dr</option> 
 
         <option value=" Prof">Prof</option> 
 
        </select> 
 
        <span class="errSpan" id="errTitle"></span> 
 
        </p> 
 
        
 
     \t \t \t <p class="myText">First Name: 
 
        <input name="First Name " type="text" id="txtFirstName" /> 
 
        <span class="errSpan" id="errFirstName"></span> 
 
        </p> 
 
      \t \t \t 
 
     \t \t \t <p class="myText">Last Name: 
 
        <input name="Last Name " type="text" id="txtLastName" /> 
 
        <span class="errSpan" id="errLastName"></span> 
 
        </p> 
 
     \t \t \t 
 
       \t <p class="myText">Gender: 
 
        <select name="Gender " id="txtGender"> 
 
         <option value=" Male">Male</option> 
 
         <option value=" Female">Female</option> 
 
        </select> 
 
        </p> 
 
       \t 
 
     \t \t \t <p class="myText">DOB: 
 
        <input name="DOB "type="text" id="txtDob" /> 
 
        <span class="errSpan" id="errDob"></span> 
 
        </p> 
 
     \t \t \t 
 
     \t \t \t <p class="myText">Email Address: 
 
        <input name="Email Address " type="text" id="txtEmail" /> 
 
        <span class="errSpan" id="errEmail"></span> 
 
        </p> 
 
       </fieldset> 
 
       \t <br /> 
 
       <fieldset style="width:85%; margin:auto;"> 
 
       <legend class="text">Your Feedback</legend> 
 
       \t <p class="myText">Feedback Type: 
 
        <select name="Feedback Type " id="txtFeedbackType"> 
 
         <option value=" General Feedback">General Feedback</option> 
 
         <option value=" Query">Query</option> 
 
         <option value=" Suggestion">Suggestion</option> 
 
         <option value=" Other(Please Specify Below)">Other (Please Specify Below)</option> 
 
        </select> 
 
        <span class="errSpan" id="errFeedbackType"></span> 
 
        </p> 
 
       \t 
 
       \t <p class="myText">Feedback: 
 
        <textarea class="myText" name="Feedback" cols="30" rows="5" id="txtFeedback"></textarea> 
 
        <span class="errSpan" id="errFeedback"></span> 
 
      \t  </p> 
 
       </fieldset> 
 
       \t <br />  
 
       <input onclick="ValidateForm();" type="button" value="Check Information" /> 
 
       <input type="submit" value="Send Feedback" /> 
 
       <input type="reset" value="Reset Fields"/> 
 
       
 
\t \t \t </form>

+1

отключить кнопку отправки почты. Если форма действительна, то разрешите ее только –

+0

И обязательно проверьте на бэкэнде. Проверка Javascript легко обойти –

ответ

0

Использование onsumbit событий формы. Возврат true если подтверждено в порядке, иначе false:

<form id="myForm" onsubmit="return ValidateForm()" .... 

А затем измените функцию:

if (invalidForm ==0) { 
    alert("Your Information that has been entered is valid and ready to send."); 
    return true; 
} 
else { 
    return false; 
} 

Вот очень упрощенный пример: https://jsfiddle.net/83LLcq3u/1/

+0

Я люблю тебя, спасибо, ты лучший, отлично работал –

 Смежные вопросы

  • Нет связанных вопросов^_^