2017-09-18 4 views
-1

다른 웹 페이지로 전송되지 않습니다라디오 버튼은 내 코드가 지정된 웹 페이지로 이동하지 않습니다 이유를 볼 수 없습니다

<form name="login" onsubmit="return validateForm()" method="post"> 
. 
. 
<input type="radio" name="ans1" id="yes">Yes<br> 
<input type="radio" name="ans2" id="no">No<br> 
<input type="submit" value="Login" onclick= "where_to_go();"> 
</form> 

스크립트를 where_to_go()을 위해 :

function where_to_go(){ 
    if (document.login.getElementById('yes').checked) { 
     // Yes is chosen 
     document.location.href = "Admin_index.html"; 

    } else if (document.login.getElementById('no').checked) { 
     // No is chosen 
     document.location.href ="Log-In_Greet.php"; 
    } 
} 

어디에서 잘못 알았습니까?

+0

먼저, 사용자가 여러 라디오 버튼을 선택할 수 없도록 라디오 버튼에 동일한 'name' 속성을 사용하려고합니다. 두 번째로 스크립트에서'document.getElementById ('yes'). checked'를 사용하여 시도해보십시오. 무언가에 대해 'id'가있는 경우 더 많은 선택기가 필요하지 않습니다. 왜냐하면 'id '. – PredatorIWD

+0

이것을 스 니펫으로 설정할 수 있으며 validateForm() 함수도 표시 할 수 있습니까? – DCR

답변

1

두 가지 문제가 있습니다.

브라우저의 개발자 도구의 콘솔에서보고 (당신은 새 페이지를 탐색 할 때를 닦아되지 않을 수 있도록 활성화 보존을 기록했다) 한 경우 첫 번째는 밝혀 질 것이다

.

getElementByIddocument 개체의 속성이며 document 개체의 속성입니다. document.login.getElementById을 호출하면 document.logic의 속성이 아니므로 예외가 발생합니다.


둘째 : 양식을 제출할 때 JS를 실행하고 있습니다.

JS가 실행되면 브라우저에 두 페이지 중 하나를 탐색하라는 메시지가 표시됩니다 (위의 문제가없는 경우). 그러면 양식 제출이 계속되어 브라우저에 양식의 action URL "현재 URL"이 지정되지 않았습니다). 이것은 JS에 설정된 URL을 덮어 씁니다.

onclick 함수에서 return false으로 신속하고 더러운 솔루션을 제공하므로 제출 단추의 정상적인 동작이 취소됩니다.

처음에는 양식 제출을 트리거하지 않으므로 약간 더러운 방법은 type="button"을 사용하는 것입니다.

견고한 접근 방법은 POST 요청시 제출 단추가 사용되었고 HTTP 리디렉션을 테스트하는 서버 측 코드를 작성하는 것입니다. 이것은 JS inevitably fails 일 때 작동합니다.

가장 깨끗하고 간단하며 신뢰할 수있는 방법은 라디오 버튼을 간단한 링크으로 바꾸는 것입니다.