链接文本框控件的必填字段和正则表达式验证器时出现问题

2023-12-02

我正在尝试使用 ASP.net 实现表单验证,并且我已尝试了建议的所有解决方案here但最好的一个是aspsnippets.com so far.

我的代码如下:

<asp:TextBox ID="tTitle" runat="server" onblur="WebForm_OnBlur()"/>
<asp:RequiredFieldValidator runat="server" ControlToValidate="tTitle"/>

<asp:TextBox ID="tEMail" runat="server" onblur="WebForm_OnBlur()"/>
<asp:RequiredFieldValidator runat="server" ControlToValidate="tEMail"/>
<asp:RegularExpressionValidator runat="server" ControlToValidate="tEMail"
ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"/>

<asp:LinkButton ID="btnSubmit" runat="server" Text="Submit"/>

JavaScript

<script type="text/javascript">
function WebForm_OnSubmit() {
    if (typeof (ValidatorOnSubmit) == "function" && ValidatorOnSubmit() == false)
    {
        for (var i in Page_Validators) {
            try {
                var control =
                document.getElementById(Page_Validators[i].controltovalidate);
                if (!Page_Validators[i].isvalid) {
                    control.className = "error";
                } else {
                    control.className = "";
                }
            } catch (e) { }
        } return false;
    } return true;
}
function WebForm_OnBlur() {
    for (var i in Page_Validators) {
        try {
            var control =
            document.getElementById(Page_Validators[i].controltovalidate);
            if (!Page_Validators[i].isvalid) {
                control.className = "error";
            } else {
                control.className = "";
            }
        } catch (e) { }
    } return false;
}
</script>

问题是电子邮件字段仅验证正则表达式。如果我更改验证器的顺序,它只会验证所需的表达式。

可能的问题是代码循环遍历所有验证器,但不会立即比较引用相同控件的验证器。这会导致仅将最后一个验证器条件应用于控件。


可能的问题是代码循环遍历所有验证器,但不会立即比较引用相同控件的验证器。这会导致仅将最后一个验证器条件应用于控件。

是的,这确实是问题所在。要修复它,您可以执行以下操作:

In the WebForm_OnBlur函数,循环遍历与失去焦点的控件关联的验证器(而不是页面上的所有验证器),并清除className仅当所有验证器都有效时才具有属性:

function WebForm_OnBlur(control) {
    for (var i = 0; i < control.Validators.length; i++) {
        if (!control.Validators[i].isvalid) {
            control.className = "error";
            return;
        }
    }
    control.className = "";
}

In the onblur的属性TextBox控制、通过this作为论点WebForm_OnBlur:

<asp:TextBox ID="tTitle" runat="server" onblur="WebForm_OnBlur(this)"/>
<asp:TextBox ID="tEMail" runat="server" onblur="WebForm_OnBlur(this)"/>

In the WebForm_OnSubmit函数、调用WebForm_OnBlur对于具有关联验证器的每个控件:

function WebForm_OnSubmit() {
    if (typeof(ValidatorOnSubmit) === "function" && ValidatorOnSubmit() === false) {
        for (var i = 0; i < Page_Validators.length; i++) {
            var control = document.getElementById(Page_Validators[i].controltovalidate);
            if (Page_Validators[i] === control.Validators[0]) // minor optimization
                WebForm_OnBlur(control);
        }
        return false;
    }
    return true;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

链接文本框控件的必填字段和正则表达式验证器时出现问题 的相关文章

随机推荐

  • Pandas:对 NaN 值进行“或”运算

    我有一个包含 3 列的 DataFrame 每列的值为NaN 我想根据这 3 列填充第四列 这样or操作应用于列 如果第一个不是NaN 取其值 否则检查第二个 依此类推 自从一个NaN值不是一个False the or运算符不能按原样使用
  • 如何检测区域上方和下方的点?

    我有这个图像 其中红点是划分该阿拉伯语词段的不同字母的坐标 我想检测点之间区域上方或下方的点 点是 从左到右 81 183 80 217 83 275 83 314 现在字母上方有一个点 81 183 and 80 217 同样 上面的部分
  • 输入要读取的自定义文件名?

    我想允许用户键入要读取 写入的任何 txt 文件的名称 这是我的代码 printf Enter txt file name n scanf s fname FILE inputf inputf fopen fname w 问题是此方法不起作
  • 如何使用线程实现缓动函数

    我试图找到一种有效 正常或简单的方法来在我的 java 程序中实现缓动函数 我让缓动功能可以工作 但我觉得有一种更有效的方法来做到这一点 我看不到的 可能是因为视野狭隘 这是我的代码 有人可以告诉我应该采取哪些不同的做法 或者指出我需要研究
  • 作为系统运行的 Windows 服务无法访问 C:\users\

    我已将 Windows 服务安装为本地系统帐户 有时它会在计算机上构建目录列表 它在 Windows 7 的 c users 目录下失败 我检查了这些文件夹 它们似乎处于系统帐户的完全控制之下 为什么我无法访问这些目录 System Una
  • 在Python中查询连接的USB设备信息的简单方法?

    如何在Python中查询已连接的USB设备信息 我想获取 UID 设备名称 例如 SonyEricsson W660 设备路径 例如 dev ttyACM0 另外 无论何时再次连接设备 上述信息中用于识别设备的最佳参数是什么 UID 我正在
  • 如何增加 Node.js 中的最大调用堆栈大小

    这与有关 Node 中错误消息的其他问题不同 RangeError 超出最大调用堆栈大小因为我确切地知道为什么会收到此错误消息 发生这种情况是因为我正在递归 实际上递归了很多次 Thanks From node help node max
  • 即使滚动到元素后,Selenium MoveTargetOutOfBoundsException

    new Actions data moveToElement element x y perform 此代码适用于 Selenium 3 8 1 Chrome 63 chromedriver 2 3 8 最终升级到 Selenium 3 1
  • Swift 中闭包有什么特殊用途吗?有什么好处?

    我学习 Swift 一段时间了 也阅读了 Swift 语言指南 https developer apple com library content documentation Swift Conceptual Swift Programmi
  • 在 JavaScript 中对数组中存储的数字求和

    我想对 JavaScript 对象中存储的数字列表求和 使用以下代码创建和更新对象 var myscore input name Points1 val scorelist JSON parse localStorage getItem p
  • 传入 Curl 的 URL 变量

    我是 cURL 新手 我的作业需要它 我为此使用 C 我有这条特殊的线路 效果很好 curl easy setopt curl CURLOPT URL http www google com 但是当我将 URL 修改为变量时 我的问题出现了
  • 为什么我的广播接收器不工作?

    我正在学习BroadCastReceiver 我试图用下面的代码实现的是 我想看到一个Toast当我切换到飞行模式时 应用程序是否打开 我没有做什么 做错了什么 请帮忙 谢谢 ConnectivityChangedReceiver java
  • 代码生成有哪些技术?

    我正在生成 C 代码 看起来它会变得非常混乱 即使是我的简单生成类也已经有大量的特殊情况 这是现在的代码 http github com alex alex s language tree local 2Fcpp Generation al
  • 过滤器聚合内的bucket_script抛出错误

    我正在尝试过滤过滤器聚合块中的空存储桶 并且我从elasticsearch 中收到错误 如果没有这个 响应会很大 因为我正在查询大量指标和嵌套聚合 为了简单起见 这是更大查询的一部分 GET index type search ignore
  • 如何更改 google 地图 api v2 的自定义信息窗口形状

    现在我使用此代码显示默认的矩形形状 this infoWindow ViewGroup getLayoutInflater inflate R layout newcustomdialog null this infoImage Image
  • 即使安装了捆绑包也无法获取本地颁发者证书

    我知道这里已经有人问过类似的问题 但我认为我的问题是不同的 我正在尝试向适当的 SSL 网站发出curl 请求 它不是自签名的 我可以轻松设置选项 甚至可以将 CA 证书包导入到正确的位置 我希望一切都好 但我仍然得到 SSL certif
  • JavaScript 将字符串中的所有 / 替换为 \?

    我有一个 javascript 文件 它使用 cscript 通过 Windows 作业运行 但是 我似乎无法修复这个问题以使其正常工作 在文件内部 它基本上采用 URL 并将其转换为 UNC 路径 ex http mysite com d
  • 从 C# 中的 csv 文件读取特定列

    我有一个简单的 3 列 csv 文件 我只需要从第一列中提取信息 我正在考虑正则表达式 但我希望有一种更简单更有效的方法 任何帮助都感激不尽 Thanks 尝试使用这个快速 CSV 阅读器
  • 如果在文本文件列表中找不到文件,批处理文件是否可以删除文件?

    尝试编写一个批处理文件 该文件将循环遍历目录中的所有文件 如果在文本文件中找不到文件的第一部分 则删除 在图像目录中 文件的命名如下 1 a jpg 1 b jpg 1 c jpg 2 a jpg 3 a jpg 3 b jpg 在文件中的
  • 链接文本框控件的必填字段和正则表达式验证器时出现问题

    我正在尝试使用 ASP net 实现表单验证 并且我已尝试了建议的所有解决方案here但最好的一个是aspsnippets com so far 我的代码如下