2014-04-13 4 views
3

필자는 약 1 시간 동안이 코드를 둘러보고 내 마음을 깜짝 놀랐다. 나는 해결책이 상당히 간단 할 것이라고 생각하지만 나는 그것을 파악하는 것 같다. 어쨌든 여기에 가 있습니다. 사용자가 입력 한 문자를 검사하여 유효한 항목으로 7 자만 받아 들일 수있는 자바 스크립트 함수를 만들었습니다. 이 부분은 잘 작동합니다. 무엇이 나던 작품은 다음 세 부분으로 처음 세 글자를 검사하여 한 달의 달과 맞는지 아닌지를 확인합니다. 지금까지는 입력 된 문자가 jan2345 또는 feb3939 인 경우에도 true를 반환하지 않습니다. 어떤 도움이라도 문제의 코드가 여기에 좋을 것입니다.Javascript SubString 유효성 검사/비교

function validateBirthDate() { 
var s =document.pizza.birthday.value; 
var check=/[A-Za-z]{3}[0-9]{4}/; 

if(s.length<7 || s.length > 7) { 
    alert("The birth date should have 7 characters!"); 
    return false; 
} 
if(s.length==7) { 
    if(check.test(s)==true) { 
    if(s.substring(0,3)!=="jan" || s.substring(0,3)!=="feb" ||  s.substring(0,3)!=="mar"|| s.substring(0,3)!=="apr" || s.substring(0,3)!=="may" ||  s.substring(0,3)!=="jun" || s.substring(0,3)!=="jul" || s.substring(0,3)!=="aug" ||  s.substring(0,3)!=="sep" || s.substring(0,3)!=="oct" || s.substring(0,3)!=="nov" ||  s.substring(0,3)!=="dec") 
    { 
    alert("The first 3 characters must be a 3 letter abbreviation of one of the 12  months!"); 
    return false; 
    } 

답변

-1

논리는 &&을 사용해야합니다 당신은 ||를 사용하지 않아야 문제

!(s.substring(0,3)=="jan" || s.substring(0,3)=="feb") 
+0

Ive는 전에 이것을 시도했고 그것은 의미가 있습니다. 아직도 doesnt는 일하는 것처럼 보인다. – user3528392

+0

이것을 사용해 보셨습니까? –

-1

입니다. s"jan" 인 경우 "feb"과 같지 않으므로 alert이 발생합니다.

당신은 또한 다음 작업을 수행 할 수 있습니다 :

var months = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', 'dec']; 
if (months.indexOf(s.substring(0,3)) === -1) { 
    alert(); 
} 

또는

if (!/jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec/i.test(s.substring(0,3))) { 
    alert(); 
} 

그러나 그것은 가치가 무엇인지,이 유효한 날짜 입력을받을 수있는 끔찍한 방법 같은 소리에 대한

. 3 개의 입력을 하루에 하나, 한 달에 하나, 한 해에 하나씩 사용할 수 있으며 가능한 입력 값을 유효한 값으로 제한합니다. 또는 <input>type=date과 함께 사용하는 것이 더 좋지만 브라우저 지원이 제한되어 있습니다. 어떤 종류의 플러그인이 최선의 방법 일 수 있습니다.

+0

도이 문제를 시도했습니다. 같은 오류가 발생합니다 : / – user3528392