2012-04-10 3 views
0

나는 내 양식에 몇 가지 간단한 필드의 유효성을 검사하는 자바 스크립트를 작성했습니다. 내 문제는 양식에 오류가없는 경우에도 코드가 작동한다는 것입니다.자바 스크립트 유효성 검사 컨트롤

구체적으로는 if(openHour > closeHour)

에서 오류가 발생합니다이 코드

function checkForm() 
{ 
    var openHour; 
    var closeHour; 
    var i; 

    for(i=1;i<8;i++) 
    { 
    openHour = document.getElementById("openHours" + i).value; 
    closeHour= document.getElementById("closeHours" + i).value; 

    if(openHour > closeHour) 
    { 
    document.getElementById('error').innerHTML= "Opening Error at " + i; 
    return false; 
    } 
    if(openHour == "0" && closeHour > 0) 
    { 
    document.getElementById('error').innerHTML= "Closing Error at " + i; 
    return false; 
    } 


    } 
} 

답변

1
openHour = parseInt(document.getElementById("openHours" + i).value); 
closeHour = parseInt(document.getElementById("closeHours" + i).value); 

난 그냥 구문 분석하는 데 필요한 값을 비교할 수 있도록 정수로 변환합니다. 모든

+0

'NaN' (즉, 알파 문자열이 전달 된 경우)을 반환 할 수 있기 때문에'parseInt()'와 조심하십시오. 다른 문제를 유발할 수 있으며 화면의 어딘가에 표시되는 경우 사용자에게 혼란을 주기도합니다. [Brendon Cheves의] (http://stackoverflow.com/a/10097688/1304626) 솔루션은 좀 더 견고합니다. 자신과 당신을 결합하고'NaN '을 확인하는 것이 현명 할 것입니다. –

2

항상 개점과 closeHours 분야에서 기본 값이있는인가?

예를 들어, 일부 기본값을 설정해보십시오 :

다음
var openHour = 0; 
var closeHour = 0; 

하기를 할당하기 전에 개점과 closedHours 그들에 값이 있는지 확인 :

if (document.getElementById("openHours" + i).value != null && document.getElementById("openHours" + i).value != "") 
    openHour = document.getElementById("openHours" + i).value; 


if (document.getElementById("closeHours" + i).value != null && document.getElementById("closeHours" + i).value != "") 
    closeHour = document.getElementById("closeHours" + i).value; 
+0

도와 주셔서 감사합니다

감사합니다, 나는 그것이 – Geo

+0

Nop는 밖으로 일 경우 알려 드리겠습니다, 그것은 여전히 ​​ – Geo

+0

당신이 당신의 HTML을 게시 할 수없는시기에 간다? 그런 식으로 디버깅하는 것이 훨씬 쉬울 것입니다. 감사. –