SetFocusOnError无法正常工作

时间:2014-01-09 09:43:50

标签: html asp.net validation webforms

我遇到的问题是我有一个表单(asp.net表单)和一些字段(大多数)都有RequiredFieldValidator。现在我还在所有这些上设置了SetFocusOnError =“true”,它适用于除下拉列表之外的所有内容。让我定义好:在其中一个字段留空后单击“提交”按钮后,浏览器会向上滚动到空白字段。在下拉列表的情况下,错误消息确实在字段旁边正确显示,但浏览器不会向上滚动屏幕到字段。到目前为止,我已经阅读了关于堆栈溢出的类似问题,他们都“为此使用JavaScript”,但我的问题是我想使用asp.net属性。如果它在那里它应该工作,对吧?除非我做错了。以下是其中一个工作字段的代码:

<div class ="row">
            <div class="three columns medium" align="right">
                <label>Email *</label>
            </div>
            <div class="three columns large">
                <asp:TextBox ID="Email" runat="server"></asp:TextBox>
            </div>
            <div class="six columns large">
                <asp:RequiredFieldValidator ID="EmailRequired" ControlToValidate="Email"
                    ErrorMessage="Please provide us your email address" forecolor="Red" SetFocusOnError="true" runat="server" /><br />
                <asp:RegularExpressionValidator ID="EmailFormat" ControlToValidate="Email"
                    ErrorMessage="Please provide us valid e-mail address" ValidationExpression="^[^\s@]+@[^\s@]+$" forecolor="Red" runat="server" />
            </div>   
        </div>

这是一个不工作焦点的样本:

<div class ="three columns medium" align="right">
            <asp:DropDownList class="dropdown expand" ID="Location" runat="server">
                <asp:ListItem
                    Enabled="True"
                    Text="Please choose the office location... *"
                    Value=""
                />
                <asp:ListItem
                    Enabled="True"
                    Text="City1"
                    Value="City1"
                />
                <asp:ListItem
                    Enabled="True"
                    Text="City2"
                    Value="City2"
                />
                <asp:ListItem
                    Enabled="True"
                    Text="City3"
                    Value="City3"
                />
            </asp:DropDownList>
        </div>
        <div class ="six columns large">
            <asp:RequiredFieldValidator ID="LocationRequired" ControlToValidate="Location"
                ErrorMessage="Please select the office location" forecolor="Red" SetFocusOnError="true" runat="server" />
        </div>
    <div class ="three columns large"></div>

我的代码是错的还是我期待它的错误?

2 个答案:

答案 0 :(得分:0)

设置此中涉及的每个控件的ValidationGroup属性,例如下拉列表,按钮,必填字段验证器等

ValidationGroup="Selection

答案 1 :(得分:0)

我担心像jqTransform这样的第三方脚本在asp.net脚本中破坏了一些设置焦点在错误控件上的东西。尝试删除第三方脚本并检查。如果它们是原因那么你需要用java脚本发明一些东西