我正在尝试使用运行良好的 Javascript 应用一些客户端验证,
但即使验证返回 false,表单也会转到服务器端方法 ex。 btnSubmit_Click()
发生这种情况可能是因为我在 btnSubmit
上调用 JavaScript 函数如下所示:
<asp:Button ID="btnSubmit" runat="server" Text="Submit" onclick="btnSubmit_Click" OnClientClick="Javascript:validate()"/>
我想检查每个文本框值是否有效,如果所有值都有效,则执行服务器端调用,即 btnSubmit_Click()
在 TextBoxes 的所有值都有效之前,其他事件保持相同的形式。
如何在单个按钮上实现这一点?
以下是完整的JavaScript
功能和aspx
代码:
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script language="javascript" type="text/javascript">
function validate() {
var summary = "";
summary += isvalidFirstname();
summary += isvalidEmail();
summary += isvalidphoneno();
if (summary != "") {
alert(summary);
return false;
}
else {
return true;
}
}
function isvalidphoneno() {
var uid;
var temp = document.getElementById("<%=txtPhone.ClientID %>");
uid = temp.value;
var re;
re = /^[0-9]d(10)/;
var digits = /\d(10)/;
if (uid == "") {
return ("Please enter phoneno" + "\n");
}
else if (re.test(uid)) {
return "";
}
else {
return ("Phoneno should be digits only" + "\n");
}
}
function isvalidFirstname() {
var uid;
var temp = document.getElementById("<%=txtName.ClientID %>");
uid = temp.value;
var re = /^[a-zA-Z ]+$/
if (uid == "") {
return ("Please enter firstname" + "\n");
}
else if (re.test(uid)) {
return "";
}
else {
return ("FirstName accepts Characters and spaces only" + "\n");
}
}
function isvalidEmail() {
var uid;
var temp = document.getElementById("<%=txtEmail.ClientID %>");
uid = temp.value;
var re = /\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/;
if (uid == "") {
return ("Please Enter Email" + "\n");
}
else if (re.test(uid)) {
return "";
}
else {
return ("Email should be in the form ex:abc@xyz.com" + "\n");
}
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<fieldset>
<legend>Employee Registration Form</legend>
<table>
<tr>
<td>Name: </td>
<td>
<asp:TextBox ID="txtName" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td>Phone Number: </td>
<td>
<asp:TextBox ID="txtPhone" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td>Email Id: </td>
<td>
<asp:TextBox ID="txtEmail" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td>Address: </td>
<td>
<asp:TextBox ID="txtAddress" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td colspan="2">
<asp:Button ID="btnSubmit" runat="server" Text="Submit"
onclick="btnSubmit_Click" OnClientClick="Javascript:validate()"/></td>
</tr>
</table>
</fieldset>
</div>
</form>
</body>
</html>
最佳答案
您必须在 OnClientClick
中返回 validate
函数的值:
OnClientClick="return validate();"
关于javascript - 当 Javascript Validation 返回 false 时如何防止服务器端操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39262082/