2014-12-24 6 views
1

div가있는 사이트가 있습니다. 누군가가 올바른 암호를 입력하면 div를 사라지게하려고합니다. Javascript로 양식의 유효성을 검사하고 해당 div의 CSSdisplay:block에서 display:none으로 성공적으로 변경했지만 표시 속성이 변경된 직후 다시 기본으로 변경됩니다. 암호가 맞으면 #overlay의 표시가 영원히 none으로 설정됩니다.자바 스크립트로 CSS 변경 양식 확인

양식.

<form id="overlay-form" name="overlay-form" method="post" onsubmit="validateForm();"> 
<input id="overlay-password" name="overlay-password" type="password"> 
<input type="submit" id="overlay-submit" value="Submit"> 
</form> 

자바 스크립트.

<script> 
    function validateForm() { 
     var x = document.forms["overlay-form"]["overlay-password"].value; 
      if (x == "password") { 
       document.getElementById('overlay').style.display = "none"; 
      } 
    } 
</script> 
+1

페이지를 새로 고치시겠습니까? ..? 이런 식으로 양식 제출로 인해 페이지가 다시로드됩니다. ** 양식을 제출하여 실제로 ** 페이지를 새로 고치기 때문에 양식이 초기 상태로 되돌아옵니다. 제출하고 싶지 않다고 생각합니다. 그냥 일반 버튼을 사용하고 싶을뿐입니다. http://jsfiddle.net/zth0vkzo/ <- 이것은 당신이 찾고있는 것입니다, 내 의견으로는. – briosheje

답변

0

제출 단추를 누르면 페이지가 다시로드되고 div가 다시 표시됩니다. 제출 버튼이 아닌 일반 버튼이 필요합니다. <input type="button">은 양식을 제출하지 않는 일반 버튼을 만듭니다.

누구나 볼 수 있기 때문에 비밀번호를 자바 스크립트에 쓰면 안됩니다!

+0

하지만 양식을 제출하지 않으면 어떻게 양식을 검증 할 수 있습니까? – Roemerdt

+0

그리고 지금 js를 사용하여 CSS를 변경하기 때문에 Javascript를 사용하고 있습니다 – Roemerdt

+0

form 태그에서'onsubmit = "validateForm();"'을 제거하고'onclick = "validateForm();"을 버튼에 추가하십시오 . – TuomasK

2

기본적으로 양식 제출은 페이지를 새로 고침 (또는 지정된 경우 작업 URL로 리디렉션)합니다. 이 기본 동작을 방지하려면 자바 스크립트에 다음을 추가하십시오.

function validateForm(event) { // pass in the event as a parameter, this is the form submit 

    var x = document.forms["overlay-form"]["overlay-password"].value; 
     if (x == "password") { 
      document.getElementById('overlay').style.display = "none"; 
      event.preventDefault(); // prevent the default behaviour here 
     } 
} 
관련 문제