javascript - 当 Javascript Validation 返回 false 时如何防止服务器端操作?

标签 javascript c# asp.net validation

我正在尝试使用运行良好的 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/

相关文章:

c# - 对于包含 ASP.NET 项目的 .NET 框架解决方案,迁移到 "new project system"(PackageReference) 是否安全/可行?

javascript - 单击按钮可更改动态生成的焦点文本框中的文本

ASP.NET 如何一次只处理来自指定用户的 1 个 HTTP 处理程序?

c# - sql 税和 odbc 代码不会插入?

javascript - 合并 id 上的两个数组 - 映射函数 - Javascript

javascript - Ember Handlebars 模板访问深层对象属性

c# - 如何以编程方式卸载 Windows 中的应用程序?

javascript - MD-LIST 恒定高度

javascript - 如何在 TypeScript 中对嵌套集合进行 JSON 序列化

c# - 文件上传到服务器。我需要检查病毒吗?