2009-02-04 61 views
1

如果用户名和密码不匹配,会显示警报,但是如果我单击确定提醒表单登录。可以告诉我如何避免它?谢谢。如何避免显示警报后提交的表单?

<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事件处理程序中。例如:失去源的onclick,并把测试的形式编程:

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; 
} 

你当然知道该客户端密码检查是徒劳的。