2009-02-04 11 views
1

Si le nom d'utilisateur et mot de passe ne correspond pas, il affiche une alerte, mais si je clique sur OK pour l'alerte le formulaire est connecté.Peut-on me dire comment l'éviter?Comment éviter que le formulaire soit soumis après l'affichage de l'alerte?

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

Répondre

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

Modifier la fin de votre fonction

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

Mieux vaut ne pas le faire comme ça. Si le formulaire est soumis sans cliquer sur un bouton (par exemple, dans diverses circonstances, lorsque vous appuyez sur Entrée), votre validation ne sera pas exécutée.

Le meilleur endroit pour mettre la validation est dans un gestionnaire d'événement form.onsubmit. par exemple .: perdre le onclick dans la source et mettre le test sur le formulaire programme:

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

Vous êtes bien sûr conscient que la vérification de mot de passe du côté client est stérile.