2009-02-04 115 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; 
} 

你當然知道該客戶端密碼檢查是徒勞的。