2012-10-12 4 views
23

자바 스크립트 window.prompt()을 호출하고 다른 변수 (매우 기본적인 비밀번호 보호)와 비교할 변수를 제출하라는 메시지가 표시됩니다. 함수는 훌륭하지만, prompt() 창에서 "cancel"을 클릭하면 함수가 단순히 종료되지 않고 변수를 빈 문자열 (사용자가 "취소"키를 눌러 제출하지 않기로 선택한)과 비교합니다. 함수는 else{ } 부분까지 계속됩니다.자바 스크립트 프롬프트() - 기능을 종료하기위한 취소 버튼

제 질문은 취소를 누르면 기능을 어떻게 종료합니까? 취소 버튼을 타겟팅하는 방법을 알아야합니다.

보통 나는 버튼의 click()에서 .stop()을 호출하지만 프롬프트 창의 취소 버튼을 대상으로하는 방법을 알지 못합니다.

+0

event.target..it는 대상 요소 참조를 사용합니다. – Apurv

+0

취소 버튼을 누를 때'prompt'는'null'을 반환합니다. – zzzzBov

답변

53

promptOK (''은 값이 제출되지 않음)을 누르면 문자열을 반환합니다. 사용자가 Cancel을 누르면 null이 반환됩니다. 당신이해야 할 모든 값이 null 여부를 확인한다 :이 닫혀있는 경우

if (prompt_responce == null) 

말할 수 있도록

function doSomething() { 
    var input; 
    input = prompt('Do something?'); 
    if (input === null) { 
     return; //break out of the function early 
    } 
    switch (input) { 
    case 'fun': 
     doFun(); 
     break; 
    case 'boring': 
     beBoring(); 
     break; 
    } 
} 
+0

굉장! 도와 주셔서 감사합니다. 당신의 설명은 그것이 얼굴을 가로 질러 때리는 것과 같았던 것처럼 명백하게 보였다! 하하. 다시 한번 감사드립니다. :) –

+0

이 질문에 대한 답변이 있으면 답변 옆에있는 체크 표시를 선택하십시오. – zzzzBov

+0

좋아 - 나는이 사이트에 noobie, 그래서 몰랐다. –

2

반환 값 (triple-equals 사용)은 null이고 결과는 return입니다.

var result = prompt("OK?"); 
if (result === null) { 
    return; 
} 

이렇게하면 사용자가 OK를 클릭하지만 내용을 입력하지 않는 경우 반환 무슨이다 빈 문자열, 구별 할 수 있습니다.

+0

굉장! 도와 주셔서 감사합니다. 정확히 내가 무엇을 찾고 있었는지. 아주 간단하고, 정말로. 나는 'null'의 반환에 대해 완전히 잊었다. –

1

방금 ​​확인할 수 있습니다.

+0

감사합니다. –

1

'프롬프트'의 결과를 처리 할 때의 실질적인 문제점 중 하나는 Safari (버전 9.1.2 이상)가 "취소"를 클릭했을 때 null 대신 ""를 반환한다는 것입니다. 이것은 다음을 의미합니다. if (result == null) return; 작동하지 않으며 널 문자열의 입력과 취소를 구분할 수 없습니다.

관련 문제