首先感謝您提供任何幫助。表單驗證在接近結束時停止工作
我有八個if語句驗證我的表單字段。前六個工作正常,但最後兩個沒有(我已經評論驗證停止工作的地方),因爲它只是重新加載頁面,就像表單被提交一樣。
我需要幫助的兩件事...... 1)爲什麼我的最後兩條if語句不起作用,以及2)有沒有比這更容易,更簡單,更高效,更好的方法來驗證?可以展示給我嗎?
腳本
$("#myform").submit(function(){
// Variables
var fname=jQuery('#fname').val();
var emailval=jQuery('#email').val();
var mailformat = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
var vemail=mailformat.test(emailval);
var phone = jQuery('#phone').val();
// ALL THREE FIELDS ARE INVALID
if ($.trim(fname).length == 0 && ($.trim(phone).length == 0 || $.trim(phone).length < 7) && ($.trim(emailval).length == 0 || vemail==false)) {
// Set the border color to red
document.getElementById("fname").style.borderColor = "#E34234";
document.getElementById("email").style.borderColor = "#E34234";
document.getElementById("phone").style.borderColor = "#E34234";
// Define the error text
jQuery('.name_error').html('<span style="color:red;"> Please enter your First Name!</span>');
jQuery('.email_error').html('<span style="color:red;"> Please enter a valid Email!</span>');
jQuery('.phone_error').html('<span style="color:red;"> Please enter a valid Phone Number!</span>');
// Display the errors
jQuery('.name_error').show();
jQuery('.email_error').show();
jQuery('.phone_error').show();
return false;
}
// Name is valid (PHONE & EMAIL IS INVALID)
else if ($.trim(fname).length != 0 && ($.trim(phone).length == 0 || $.trim(phone).length < 7) && ($.trim(emailval).length == 0 || vemail==false)) {
// Ensure the Name Field is styled correctly and the error is hidden
document.getElementById("fname").style.borderColor = "#ccc";
jQuery('.name_error').hide();
// Set the border color to red
document.getElementById("email").style.borderColor = "#E34234";
document.getElementById("phone").style.borderColor = "#E34234";
// Define the error text
jQuery('.email_error').html('<span style="color:red;"> Please enter a valid Email!</span>');
jQuery('.phone_error').html('<span style="color:red;"> Please enter a valid Phone Number!</span>');
// Display the errors
jQuery('.email_error').show();
jQuery('.phone_error').show();
return false;
}
// Phone is valid (NAME & EMAIL IS INVALID)
else if ($.trim(fname).length == 0 && $.trim(phone).length > 6 && ($.trim(emailval).length == 0 || vemail==false)) {
// Ensure the Phone Field is styled correctly and the error is hidden
document.getElementById("phone").style.borderColor = "#ccc";
jQuery('.phone_error').hide();
// Set the border color to red
document.getElementById("email").style.borderColor = "#E34234";
document.getElementById("phone").style.borderColor = "#E34234";
// Define the error text
jQuery('.name_error').html('<span style="color:red;"> Please enter your First Name!</span>');
jQuery('.email_error').html('<span style="color:red;"> Please enter a valid Email!</span>');
// Display the errors
jQuery('.name_error').show();
jQuery('.email_error').show();
return false;
}
// Email is valid (NAME & PHONE IS INVALID)
else if ($.trim(fname).length == 0 && ($.trim(phone).length == 0 || $.trim(phone).length < 7) && ($.trim(emailval).length != 0 && vemail != false)) {
// Ensure the Email Field is styled correctly and the error is hidden
document.getElementById("email").style.borderColor = "#ccc";
jQuery('.email_error').hide();
// Set the border color to red
document.getElementById("fname").style.borderColor = "#E34234";
document.getElementById("phone").style.borderColor = "#E34234";
// Define the error text
jQuery('.name_error').html('<span style="color:red;"> Please enter your First Name!</span>');
jQuery('.phone_error').html('<span style="color:red;"> Please enter a valid Phone Number!</span>');
// Display the errors
jQuery('.name_error').show();
jQuery('.phone_error').show();
return false;
}
// Name is entered and Email is valid (PHONE IS INVALID)
else if ($.trim(fname).length != 0 && ($.trim(phone).length == 0 || $.trim(phone).length < 7) && ($.trim(emailval).length != 0 && vemail != false)) {
// Ensure the Name & Email Fields are styled correctly and the errors are hidden
document.getElementById("fname").style.borderColor = "#ccc";
document.getElementById("email").style.borderColor = "#ccc";
jQuery('.name_error').hide();
jQuery('.email_error').hide();
// Set the border color to red
document.getElementById("phone").style.borderColor = "#E34234";
// Define the error text
jQuery('.phone_error').html('<span style="color:red;"> Please enter a valid Phone Number!</span>');
// Display the errors
jQuery('.phone_error').show();
return false;
}
// Phone has more than 6 characters and Email is valid (NAME IS INVALID)
else if ($.trim(fname).length == 0 && ($.trim(phone).length != 0 || $.trim(phone).length > 6) && ($.trim(emailval).length != 0 && vemail != false)) {
// Ensure the Phone & Email Fields are styled correctly and the errors are hidden
document.getElementById("phone").style.borderColor = "#ccc";
document.getElementById("email").style.borderColor = "#ccc";
jQuery('.phone_error').hide();
jQuery('.email_error').hide();
// Set the border color to red
document.getElementById("fname").style.borderColor = "#E34234";
// Define the error text
jQuery('.name_error').html('<span style="color:red;"> Please enter your First Name!</span>');
// Display the errors
jQuery('.name_error').show();
return false;
}
// *** HERE DOWN IS WHERE THINGS NO LONGER WORK AS THEY SHOULD ***
// Phone has more than 6 characters and Name is entered (EMAIL IS INVALID)
else if (($.trim(fname).length != 0 && $.trim(phone).length > 6) && ($.trim(emailval).length == 0 || vemail==false)) {
// Ensure the Name & Phone Fields are styled correctly and the errors are hidden
document.getElementById("name").style.borderColor = "#ccc";
document.getElementById("phone").style.borderColor = "#ccc";
jQuery('.name_error').hide();
jQuery('.phone_error').hide();
// Set the border color to red
document.getElementById("email").style.borderColor = "#E34234";
// Define the error text
jQuery('.email_error').html('<span style="color:red;"> Please enter a valid Email Address</span>');
// Display the errors
jQuery('.email_error').show();
alert(vemail);
return false;
}
// ALL FIELDS ARE GOOD
else if ($.trim(fname).length != 0 && $.trim(phone).length > 6 && ($.trim(emailval).length != 0 && vemail != false)) {
// Ensure all fields are styled correctly and errors are hidden
document.getElementById("name").style.borderColor = "#ccc";
document.getElementById("phone").style.borderColor = "#ccc";
document.getElementById("email").style.borderColor = "#ccc";
jQuery('.name_error').hide();
jQuery('.phone_error').hide();
jQuery('.email_error').hide();
alert("All is good. We're ready to submit!")
return false;
}
else {
// ALERT
alert("None of the validation is working");
return false;
}
});
HTML - 只是這涉及到字段集...
<fieldset>
<h1 class="fs-title mt16 thick">HEADDER</h1>
<input type="text" id="fname" name="fname" placeholder="First Name" />
<div class="name_error"></div>
<input type="email" id="email" name="email" placeholder="What is your email address?" />
<div class="email_error"></div>
<input type="tel" id="phone" name="phone" placeholder="Phone Number (i.e. 5555551212)" />
<div class="phone_error"></div>
<label class="option-button uppercase thick"><input type="radio" name="contact" value="email" />Contact me by email</label>
<label class="option-button uppercase thick"><input type="radio" name="contact" value="phone" checked />Contact me by phone</label>
<input type="button" name="previous" class="previous action-button" value="Previous" />
<input type="submit" name="submit" class="submit action-button" value="Submit" />
</fieldset>
謝謝@spaceman!這解決了最後兩個驗證無效的問題。 :) – thelincster
@spaceman添加一個答案,所以我可以upvote你。 – thelincster
把它移到了答案上,很高興我能幫上忙。 – spaceman