2013-08-22 4 views
4

누구든지이 코드를 향상시킬 수있는 방법을 알려주고 가장 중요한 것은 Z가 아무 것도 없거나 "전자 메일"문자열이 아닌 모든 경우에 작동하도록 전자 메일 유효성 검사를 정렬 할 수 있습니까?자바 스크립트 양식 유효성 검사에서 "같지 않음"기호가 인식되지 않음

모든 필드는 고객에게 예제로 입력 한 적절한 문구로 시작합니다.

친절하시기 바랍니다.

function validateForm() 
{ 
//Uses HTML field IDs 
var x=document.forms["myForm"]["name"].value; 
var y=document.forms["myForm"]["phone"].value; 
var z=document.forms["myForm"]["email"].value; 

//Name locator 
    if (x==null || x=="" || x=="Name") 
     { 
     alert("Please enter the your name."); 
     return false; 
} 

//Contact method locator 
    if ((y==null || y=="" || y=="Phone Number")&&(z==null || z=="" || z=="Email")) 
     { 
     alert("Please enter a contact method."); 
     return false; 
} 

//Phone numeric validation, this runs if Email field is not edited 
    if (z==null || z=="" || z=="Email") 
    { 
    if (isNaN(y)||x.indexOf(" ")!=-1) 
     { 
     alert("Telephone must be a numeric value."); 
     return false; 
     } 
} 

//Phone length validation, this runs if Email field is not edited 
    if (z==null || z=="" || z=="Email") 
    { 
    if (y.length > 14) 
     { 
     alert("Telephone must be valid."); 
     return false; 
     } 
} 

//Email validation, does not work, this should run only when something is entered into the field 
    if (z!=null || z!="" || z!="Email") 
    { 
    var atpos=z.indexOf("@"); 
    var dotpos=z.lastIndexOf("."); 
     if (atpos<1 || dotpos<atpos+2 || dotpos+2>=z.length) 
     { 
     alert("This is not a valid e-mail address"); 
     return false; 
     } 
    } 
} 
+1

당신은'경고 (z는)'는 값이 유효성 검사를하기 전에되고 무엇을보고하기 위해 시도? – DevlshOne

+2

몇 가지 팁 : a) 벡터 데이터 등을 나타내지 않으면 ** 이름 변수'x, y, z '를 ** 절대 사용하지 마십시오. b) 들여 쓰기를 수정하십시오. c) 코드 DRY : 'null', '' ''또는 주어진 값 (예 : '이름', '이메일', '전화 번호')을 확인하는 함수를 만듭니다. – ComFreek

+1

z가 0이거나 z가 빈 문자열이거나 z가 "전자 메일"일 때 조건이 true가됩니다. 이런 식으로 작동하지 않니? 문제가 정확히 무엇입니까? 개선에 대한 조언을 원하면 자리 표시 자 속성을 사용하면 "이메일"을 확인할 필요가 없습니다. http://www.w3schools.com/tags/att_input_placeholder.asp –

답변

5

몇 가지 작업을 수행 할 수 있습니다.

z==null || z==""

!Boolean(z) 또는 !z

z!=null || z!=""로 대체 될 수는 기대 타입 강제 변환하지 않는 한 == 대신 === Boolean(z) 또는 !!z

또한 항상 사용하려고합니다으로 대체 할 수있다. >z==null || z=="" || z=="Email" (X2) -

그래서 z == "Email"에 대한 검사는 코드를 반복처럼도 보이는이 z.toLowerCase() === "email"

처럼 뭔가 변경 될 수 있습니다. Phone number validation과 Phone length validation을 결합 할 수 있습니다.

2

this validation code (jQuery와 Javascript의 조합)을 살펴보십시오.

/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i.test(value) 
1

변경 :

if (z!=null || z!="" || z!="Email") 
그것은 당신이 이메일 주소에 대한 GREAT 정규식 예를 포함하여 전형적인 형태 (의 특정 요소를 처리하기 위해 찾고 어떻게되어야 하는지를에서 눈부신 통찰력을 흘렸다

이 사람 :.

당신이 제출하기 전에 사실로이 모든 것을 원하기 때문에 당신의 유효성 검사가 모든 AND 연산 대 논리합을해야
if (z!=null && z!="" && z!="Email") 

1

양식 유효성 검사를 수동으로 작성하는 대신 validate.js과 같은 것을 사용해 보셨습니까?

예제 코드 :

var validator = new FormValidator('example_form', [{ 
    name: 'req', 
    display: 'required',  
    rules: 'required' 
}, { 
    name: 'alphanumeric', 
    rules: 'alpha_numeric' 
}, { 
    name: 'password', 
    rules: 'required' 
}, { 
    name: 'password_confirm', 
    display: 'password confirmation', 
    rules: 'required|matches[password]' 
}, { 
    name: 'email', 
    rules: 'valid_email' 
}, { 
    name: 'minlength', 
    display: 'min length', 
    rules: 'min_length[8]' 
}], function(errors, event) { 
    if (errors.length > 0) { 
     // Show the errors 
    } 
}); 
관련 문제