2011-10-13 7 views
0

기본적으로 필수 입력란이며 10 진수를 포함 할 수없는 프롬프트가 있습니다. while 루프는 확인 또는 취소 여부에 관계없이 번호가 표시 될 때까지 계속 사용자에게 정보를 제공해야합니다. 확인 버튼을 클릭하면 모든 것이 올바르게 작동합니다. 공백으로두고 확인을 클릭하거나 십진수가있는 숫자를 입력하고 확인을 클릭하면 계속 프롬프트됩니다. 그러나 취소를 클릭하면 계속 프롬프트되지 않습니다. 당신은 모든 조건에 bitwise OR |을하고있다 -Javascript 프롬프트가 While 루프에서 작동하지 않음

var rmiles = prompt("Please indicate actual miles driven for payroll"); 
    while (rmiles == null | rmiles == "null" | rmiles == " " | rmiles.indexOf(".") != -1) { 
     alert("Mileage is required when arriving on site and can only be whole numbers. No Decimals. Please enter 0 if you did not intend to arrive on site."); 
     rmiles = prompt("Please indicate actual miles driven for payroll"); 
    } 
+3

이것은 사용자 경험의 반 그리스도와 같습니다. Lightbox 또는 이와 유사한 항목에서 필수 필드 대신 프롬프트 및 경고를 사용하는 이유가 있습니까? – jbabey

답변

3

나는 문제가 당신의 while 상태입니다 믿습니다. 이는 rmilesnull으로 설정하고 prompt을 취소를 클릭해도 항상 rmiles.indexOf(".")이 호출됨을 의미합니다. 이는 비트 OR이 단락되지 않기 때문입니다.

널 기준 오차 단락을 수행함으로써 피할 logical OR || 시도 : 사용자가 클릭 할 때 rmiles가 null

while (rmiles == null || /*...*/ 
+0

+1 나는 그것을 보지 못해서 나 자신에게 실망했다. –

+0

그건 완전히 효과가 있습니다. 이 일이 가능한 한 빨리 당신의 대답을 몇 분 안에 받아 들일 것입니다. 감사! – jmease

0

때문에 '취소'는 .. 그래서 rmiles.indexOf 오류/예외 명을 생성 루프.

관련 문제