Formulaire de Contact de validation javascript

Hier, j'ai été à la suite d'un tutoriel pour la validation côté client à l'aide d'expressions régulières. Il a bien fonctionné pour la plupart. Je ne peux pas comprendre ce que j'ai changé pour cet arrêt de travail.

Fondamentalement, je ne pense pas que le formulaire doit être soumis à tous, même s'il passe la validation. Lorsque je clique sur soumettre et tous les champs sont vides, il devrait afficher le message d'erreur, mais seulement le nom de domaine n'. Avec les messages d'erreur affichés, le formulaire va continuer de soumettre

HTML

  <form>
<div class="form-group">
<label for="contact-name">Name</label>
<input type="text" class="form-control" id="contact-name" name="name"       placeholder="Enter your name.." onkeyup='validateName()'>
<span class='error-message' id='name-error'></span>
</div>
<div class="form-group">
<label for="contact-phone">Phone Number</label>
<input type="tel" class="form-control" id="contact-phone" name="phone" placeholder="Ex: 1231231234" onkeyup='validatePhone()'>
<span class='error-message' id='phone-error'></span>
</div>
<div class="form-group">
<label for="contact-email">Email address</label>
<input type="email" class="form-control" id="contact-email" name="email" placeholder="Enter Email" onkeyup='validateEmail()'>
<span class='error-message' id='email-error'></span>
</div>   
<div class="form-group">
<label for='contactMessage'>Your Message</label>
<textarea class="form-control" rows="5" id='contact-message'  name='message'  placeholder="Enter a brief message" onkeyup='validateMessage()'></textarea>
<span class='error-message' id='message-error'></span>
</div>
<button onclick='validateForm()' class="btn btn-default">Submit</button>
<span class='error-message' id='submit-error'></span>
</form>

JS

function validateName() {
var name = document.getElementById('contact-name').value;
if(name.length == 0) {
producePrompt('Name is required', 'name-error' , 'red')
return false;
}
if (!name.match(/^[A-Za-z]*\s{1}[A-Za-z]*$/)) {
producePrompt('First and last name, please.','name-error', 'red');
return false;
}
producePrompt('Valid', 'name-error', 'green');
return true;
}
function validatePhone() {
var phone = document.getElementById('contact-phone').value;
if(phone.length == 0) {
producePrompt('Phone number is required.', 'phone-error', 'red');
return false;
}
if(phone.length != 10) {
producePrompt('Include area code.', 'phone-error', 'red');
return false;
}
if(!phone.match(/^[0-9]{10}$/)) {
producePrompt('Only digits, please.' ,'phone-error', 'red');
return false;
}
producePrompt('Valid', 'phone-error', 'green');
return true;
}
function validateEmail () {
var email = document.getElementById('contact-email').value;
if(email.length == 0) {
producePrompt('Email Invalid','email-error', 'red');
return false;
}
if(!email.match(/^[A-Za-z\._\-[0-9]*[@][A-Za-z]*[\.][a-z]{2,4}$/)) {
producePrompt('Email Invalid', 'email-error', 'red');
return false;
}
producePrompt('Valid', 'email-error', 'green');
return true;
}
function validateMessage() {
var message = document.getElementById('contact-message').value;
var required = 30;
var left = required - message.length;
if (left > 0) {
producePrompt(left + ' more characters required','message-error','red');
return false;
}
producePrompt('Valid', 'message-error', 'green');
return true;
}
function validateForm() {
if (!validateName() || !validatePhone() || !validateEmail() || !validateMessage()) {
jsShow('submit-error');
producePrompt('Please fix errors to submit.', 'submit-error', 'red');
setTimeout(function(){jsHide('submit-error');}, 2000);
}
else {
}
}
function jsShow(id) {
document.getElementById(id).style.display = 'block';
}
function jsHide(id) {
document.getElementById(id).style.display = 'none';
}
function producePrompt(message, promptLocation, color) {
document.getElementById(promptLocation).innerHTML = message;
document.getElementById(promptLocation).style.color = color;
}

Je comprends, ce n'est pas configuré pour envoyer effectivement rien à PHP. Je crois que le code javascript doit travailler à trouver que rien n'a changé, mais le HTML est.

  • Pouvez-vous s'il vous plaît être un peu plus explicite sur l'endroit où votre erreur est survenue? Avez-vous essayé d'ouvrir le débogueur et le regarda de tout les erreurs retournées par le débogueur?
  • Je ne suis pas sûr de l'endroit où l'erreur provient de. Rien dans le débogueur montrant Essentiellement la forme de soumettre n'importe quoi. Même si le javascript de validation s'affiche pendant une seconde en disant: je ne peux pas laisser un champ vide ou ce que jamais.
  • Vous devez utiliser try...catch dans les fonctions de validation, de sorte que les erreurs de système seront également pris.
InformationsquelleAutor Hobbes | 2014-06-09