2009-02-04 5 views
1

사용자 이름과 암호가 일치하지 않으면 경고를 표시하지만 경고에 ok를 클릭하면 양식이 로그인됩니다. 피할 수있는 방법을 알려줄 수 있습니까? 감사합니다.알림을 표시 한 후 양식을 제출하지 않으려면 어떻게해야합니까?

<html> 
<f:view> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<title>Insert title here</title> 
</head> 
<body> 
<h:form id="loginForm"> 
<h1><center>Login page</center> </h1> 
<h:panelGrid columns="2"> 
<h:outputLabel value="UserName"></h:outputLabel> 
<h:inputText id="name" value="#{user.name}"> </h:inputText> 
<h:outputLabel value="Password"></h:outputLabel> 
<h:inputSecret id="password" value="#{user.password}"></h:inputSecret> 
</h:panelGrid> 
<h:commandButton type="button" value="Login" action="logged" onclick="checkPassword(this.form)"></h:commandButton> 
</h:form> 
</body> 
<script type="text/javascript"> 
<!-- 
function checkPassword(form) { 
var passsword = form["loginForm:password"].value; 
var username=form["loginForm:name"].value; 
var confirmpassword ="welcome"; 
var confirmusername="admin"; 
if((passsword == confirmpassword)&&(username==confirmusername)) 
form.submit(); 
else 
alert("Username and Password does not match"); 
} 
--> 
</script> 
</f:view> 
</html> 

답변

3
... onclick="checkPassword(this.form); return false;" ... 
1

변경

else { 
    alert("Username and Password does not match"); 
    return false; 
} 
0
if((passsword == confirmpassword)&&(username==confirmusername)) 
form.submit(); 

에 함수의 끝보다도 그런 식으로하지. 폼이 버튼 클릭없이 제출되면 (예 : Enter 키를 누를 때 다양한 상황에서) 유효성 검사가 실행되지 않습니다.

유효성 검사를 수행하는 가장 좋은 장소는 form.onsubmit 이벤트 처리기입니다. 예를 들면 : 소스에서 온 클릭을 잃고 프로그래밍 양식에 테스트를 넣어 :

var form= document.getElementById('loginForm'); 
form.onsubmit= function() { 
    var isok= this.elements['loginForm:username'].value=='admin' && this.elements['loginForm:password'].value=='welcome'; 
    if (!isok) 
     alert('Wrong, fool!'); 
    return isok; 
} 

당신은 클라이언트 측 암호 검사가 효과가없는 것을 물론 알고 있습니다.

관련 문제