#javascript #validation
#javascript #проверка
Вопрос:
Привет, ребята. В настоящее время я использую очень неэффективный скрипт для проверки моих форм. Код является массивным.
Идея заключается в том, что если поле ввода пустое, метка ввода выделяется красным, а div в верхней части формы отображает информацию об ошибке.
function new_receiver(){
if (document.getElementById("RecieversName").value ==""){ //First Name
var txt=document.getElementById("error_receiver");
txt.innerHTML="<p><font color="#FF0000">You need to enter a Name!</font></p>";
window.document.getElementById("RecieversName_label").style.color = '#FF0000';
//Reset
window.document.getElementById("receiver_check_label").style.color = '#000000';
window.document.getElementById("RecieversNumber_label").style.color = '#000000';
window.document.getElementById("RecieversEmail_label").style.color = '#000000';
}else if (document.getElementById("RecieversNumber").value ==""){ //First Name
var txt=document.getElementById("error_receiver");
txt.innerHTML="<p><font color="#FF0000">You need to enter a Phone Number!</font></p>";
window.document.getElementById("RecieversNumber_label").style.color = '#FF0000';
//Reset
window.document.getElementById("receiver_check_label").style.color = '#000000';
window.document.getElementById("RecieversName_label").style.color = '#000000';
window.document.getElementById("RecieversEmail_label").style.color = '#000000'
}else if (document.getElementById("RecieversNumber").value ==""){ //First Name
var txt=document.getElementById("error_receiver");
txt.innerHTML="<p><font color="#FF0000">You need to enter an Email!</font></p>";
window.document.getElementById("RecieversEmail_label").style.color = '#FF0000';
//Reset
window.document.getElementById("receiver_check_label").style.color = '#000000';
window.document.getElementById("RecieversName_label").style.color = '#000000';
window.document.getElementById("RecieversNumber_label").style.color = '#000000';
}else{
from.receiver.submit();
}’
Есть идеи или методы, как упростить этот процесс, поскольку некоторые из моих форм содержат до 9 полей ввода, а этот метод проверки является массовым!
Приветствую, ребята!!!
Сэмюэль.
Ответ №1:
Я предлагаю что-то вроде этого:
function new_receiver() {
var inputs = [
{
id: "RecieversName",
name: "a Name"
},
{
id: "RecieversNumber",
name: "a Phone Number"
}
// add more here
],
length = inputs.length,
error = document.getElementById("error_receiver"),
hasError = false,
i;
// reset
for (i = 0; i < length; i ) {
document.getElementById(inputs[i].id "_label").style.color = "#000000";
}
error.innerHTML = "";
for (i = 0; i < length; i ) {
if (document.getElementById(inputs[i].id).value == "") {
error.innerHTML = "<p><font color="#FF0000">You need to enter " inputs[i].name "!</font></p>";
document.getElementById(inputs[i].id "_label").style.color = "#FF0000";
hasError = true;
break;
}
}
if (!hasError) {
from.receiver.submit();
}
}
Ответ №2:
Вы можете начать, попробовав что-то вроде этого
$('input').blur(function() {
if($(this).val()==""){
$("#error_receiver").html("<p><font color="#FF0000">This field is required!");
$("label[for=' this.attr("id") ']").css('color', '#FF0000');
}
});
Ответ №3:
Вот предложение без jQuery
<form onsubmit="return new_receiver()">
.
.
var formFields = {
"RecieversName": "You need to enter a Name!",
"RecieversNumber":"You need to enter a Number!",
"RecieversEmail":"You need to enter an Email!"
}
function new_receiver(){
var txt=document.getElementById("error_receiver");
//Reset
txt.innerHTML="";
for (var o in formFields) document.getElementById(o "_label").style.color = '#000000';
for (var o in formFields) {
if (document.getElementById(o).value ==""){
txt.innerHTML="<p><font color="#FF0000">" formFields[o] "</font></p>";
window.document.getElementById(o "_label").style.color = '#FF0000';
return false;
}
}
return true
}
Ответ №4:
вы можете использовать плагин проверки jqueryhttp://bassistance.de/jquery-plugins/jquery-plugin-validation /
Комментарии:
1. Это потребовало бы, чтобы он тоже использовал jQuery, чего, похоже, он не делает.
2. @alex Он упомянул jQuery в названии
3. Приветствую Махеша. Я пытаюсь избежать использования дополнительных плагинов, поскольку у меня уже есть head, но это все еще отличный вариант на будущее!