#javascript
#javascript
Вопрос:
Привет написал проверку javascript для моей страницы контактов. для этого я использовал функцию switch case. это работает нормально. Но я не смог получить конечный результат как True или false. это означает, что в случае, если все формы допустимы, результат должен быть true, иначе false. как я могу получить результат из моей функции.
это моя функция, которую я написал (мне нравится использовать этот базовый javascript) :
window.onload = function (){
var subButton = document.getElementById("submit");
subButton.onclick = function (){
var myForm = document.getElementsByTagName('form')[0];
var myFormStatus = false;
myElements = myForm.elements;
for(i=0;i<myElements.length;i ){
ele = myElements[i];
if(ele.type == 'text' || ele.type == 'textarea'){
switch(ele.id){
case 'name':
case 'company':
case 'message':
var valueCheck = textValidation(ele.value);
if(valueCheck){
var errorSpan = spanMaker(ele.nextSibling);
myFormStatus = false;
}
else{
var hideSpan = spanHider (ele.nextSibling);
myFormStatus = true;
}
break;
case 'email':
var emailCheck = emailValidation(ele.value);
if(!emailCheck){
var errorSpan = spanMaker (ele.nextSibling);
myFormStatus = false;
}
else{
var hideSpan = spanHider (ele.nextSibling);
myFormStatus = true;
}
break;
case 'phone':
var phoneNum = regIsNumber(ele.value);
if(!phoneNum){
var errorSpan =spanMaker (ele.nextSibling);
myFormStatus = false;
}
else{
var hideSpan = spanHider (ele.nextSibling);
myFormStatus = true;
}
break;
default :
break;
}
}
function textValidation (text){
return !/[^s]/.test(text);
}
function emailValidation (email){
var reg = /^([A-Za-z0-9_-.]) @([A-Za-z0-9_-.]) .([A-Za-z]{2,4})$/;
return String(email).search (reg) != -1;
}
function regIsNumber(fData){
var isInteger_re = /^[d| |(] [)|d|s|-]*[d]$/;
return String(fData).search (isInteger_re) != -1;
}
function spanMaker(element){
while(element amp;amp; element.nodeType !=1){
element = element.nextSibling;
element.style.display = 'block';
}
}
function spanHider (element){
while(element amp;amp; element.nodeType !=1){
element = element.nextSibling;
element.style.display = 'none';
}
}
}
}
}
есть хорошие предложения?
Ответ №1:
возможно, вы можете инициализировать свой myFormStatus
значением true, а затем использовать логический оператор ‘amp;’ для каждого логического значения для каждого случая проверки (1 false и ваш последний результат false, а все true делают ваш последний результат true)
хорошая таблица истинности всегда полезна при программировании 😉
Ответ №2:
Изменить на
window.onload = function (){
var myForm = document.getElementsByTagName('form')[0];
var myFormStatus = true;
myForm.onsubmit = function (){
for(i=0;i<myElements.length;i ){
ele = myElements[i];
if(ele.type == 'text' || ele.type == 'textarea'){
var hideSpan = spanHider (ele.nextSibling);
switch(ele.id){
case 'name':
case 'company':
case 'message':
var valueCheck = textValidation(ele.value);
if(valueCheck){ // should really return FALSE if invalid
var errorSpan = spanMaker(ele.nextSibling);
myFormStatus = false;
}
break;
case 'email':
var emailCheck = emailValidation(ele.value);
if(!emailCheck){
var errorSpan = spanMaker (ele.nextSibling);
myFormStatus = false;
}
break;
case 'phone':
var phoneNum = regIsNumber(ele.value);
if(!phoneNum){
var errorSpan =spanMaker (ele.nextSibling);
myFormStatus = false;
}
break;
} // switch
} // if
} // for
} // onsubmit
return myFormStatus
}
Комментарии:
1. размещение этой строки: var hideSpan = spanHider (ele.nextSibling); показать ошибку. вы можете это исправить?