【问题标题】:How to determine if a control has required-field validator using JQuery如何使用 JQuery 确定控件是否具有必填字段验证器
【发布时间】:2013-10-08 13:12:45
【问题描述】:

我正在使用带有 C# 的 ASP.NET 4.5。

我有一个包含多个 asp 文本框的 aspx 页面。其中一些是在提交表格时必须填写的,而其中一些是非强制性的。

在客户端 OnBlur 事件中,我想检查文本框是否是强制性的?

对于补充文本框,我已经在表单中有必填字段验证器。还要验证我正在使用的文本框 onblur="ValidatorOnChange(event);"。

我创建了一个 JQuery 函数,该函数被称为每个控件的 onblur 事件,即在下面给出:

 $(document).ready(function () {
                disableResetButton();
                disableSaveButton();

                $("input").blur(function (event) {
                    var id = event.target.id;
                    var value = $("#" + id).val();
                    if (document.getElementById(id).className.match(/(?:^|\s)txtRequireBorder-Color(?!\S)/) && value != '') {
                        document.getElementById(id).className = document.getElementById(id).className.replace(/(?:^|\s)txtRequireBorder-Color(?!\S)/g, ' txtBorder-Color');
                    }
                    var $validator = $("[ControlToValidate=" + this.id + "]");
                    alert($validator.length);

                    //else if (document.getElementById(id).className.match(/(?:^|\s)txtRequireBorder-Color(?!\S)/)) {

                       // document.getElementById(id).className = document.getElementById(id).className.replace(/(?:^|\s)txtBorder-Color(?!\S)/g, ' txtRequireBorder-Color');

                });

                setBorder();
            });

表单上的文本框示例如下:

<tr style="vertical-align: top;">
                        <td align="left" class="formlabel2" valign="top" width="17%" id="tdFirstName">
                            <asp:Label ID="lblFName" runat="server" Text="First Name"></asp:Label>
                        </td>
                        <td align="left" valign="top" colspan="2" width="40%">
                            <asp:TextBox ID="txtFname" runat="server" CssClass="txtBoxWidthMiddle txtSingleline txtBack-Color txtRequireBorder-Color"
                                MaxLength="50" TabIndex="2" onblur="ValidatorOnChange(event);"></asp:TextBox>
                            <br />
                            <asp:RequiredFieldValidator ID="rfvFname" runat="server" ControlToValidate="txtFname"
                                ErrorMessage="First Name is required" ValidationGroup="a" Display="Dynamic"></asp:RequiredFieldValidator>
                            <asp:RegularExpressionValidator ID="revFname" runat="server" ControlToValidate="txtFname"
                                ErrorMessage="Please enter proper first name" ValidationGroup="a" Display="Dynamic"
                                ValidationExpression="^[\w. ,'#&$~@!&quot;-]*$"></asp:RegularExpressionValidator>
                        </td>
                    </tr>
                    <tr style="vertical-align: top;">
                        <td align="left" class="formlabel2" valign="top" width="20%">
                            <asp:Label ID="lblMName" runat="server" Text="Middle Name"></asp:Label>
                        </td>
                        <td align="left" valign="top" colspan="2">
                            <asp:TextBox ID="txtMname" runat="server" CssClass="txtSingleline txtBoxWidthMiddle txtBorder-Color txtBack-Color"
                                TabIndex="3" onKeyDown="return (event.keyCode != 13)" MaxLength="50"></asp:TextBox>
                            <br />
                            <asp:RegularExpressionValidator ID="revMname" runat="server" ControlToValidate="txtMname"
                                ErrorMessage="Please enter proper middle name" ValidationGroup="a" Display="Dynamic"
                                ValidationExpression="^[\w. ,'#&$~@!&quot;-]*$"></asp:RegularExpressionValidator>
                        </td>
                    </tr>
                    <tr>
                        <td align="left" class="formlabel2" valign="top">
                            <asp:Label ID="lblLName" runat="server" Text="Last Name"></asp:Label>&nbsp;
                        </td>
                        <td align="left" valign="top" colspan="2" width="38%">
                            <asp:TextBox ID="txtLname" runat="server" CssClass="txtBoxWidthMiddle txtSingleline txtBack-Color txtRequireBorder-Color"
                                TabIndex="4" MaxLength="50" onblur="ValidatorOnChange(event);"></asp:TextBox>
                            <br />
                            <asp:RequiredFieldValidator ID="rfvLName" runat="server" ControlToValidate="txtLname"
                                ErrorMessage="Last Name is required" ValidationGroup="a" Display="Dynamic"></asp:RequiredFieldValidator>
                            <asp:RegularExpressionValidator ID="revLname" runat="server" ControlToValidate="txtLname"
                                ErrorMessage="Please enter proper last name" ValidationGroup="a" Display="Dynamic"
                                ValidationExpression="^[\w. ,'#&$~@!&quot;-]*$"></asp:RegularExpressionValidator>
                        </td>
                    </tr>

现在,我如何确定是从强制文本框还是从非强制文本框调用模糊事件?

谢谢。

【问题讨论】:

  • 请在运行后提供页面完整源输出的 JSFiddle,以便我们查看您可能遇到的其他问题。
  • 请提供源输出,即运行后从您的浏览器输出,而不是服务器端源代码。谢谢。
  • 您的源代码有很多依赖项,很难从您提供的服务器端代码的 sn-p 中重现输出(我知道我只是浪费时间尝试)。如果您不能提供源输出,我无法帮助您。抱歉,我不能再花时间在这上面了。现在删除我的答案,因为你无法使用它。
  • 抱歉,无法给出完整代码。这里link更新并检查相同的问题显示在这里。
  • 恐怕您没有抓住重点...如果您提供只提供与您的服务器端代码匹配的输出层次结构部分,我们将能够澄清这一点。您修改的我的 JSFiddle 缺少您通常会在验证器元素上找到的关键元素。如果你不能提供相关的例子,基本上你不会得到具体的答案。对不起。

标签: c# javascript jquery asp.net validation


【解决方案1】:

因为验证需要属性 'data-val-required' 试试这个:

var attr = $(this).attr('data-val-required');
if(typeof attr!=='undefined' && attr!==false){
//blah blah code
}

干杯。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-23
    相关资源
    最近更新 更多