簡體   English   中英

如何避免在顯示警報后提交表單?

[英]How to avoid the form being submitted after displaying alert?

如果用戶名和密碼不匹配,它會顯示一個警報,但如果我單擊“確定”以發出警報,表單就會登錄。誰能告訴我如何避免它? 謝謝。

<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>
... onclick="checkPassword(this.form); return false;" ...

將函數的結尾更改為

else {
    alert("Username and Password does not match");
    return false;
}
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;
}

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM