2013-03-12 65 views
0

我在这里看到了很多与这个问题非常接近的问题,但没有一个看起来适合这个特定场景。asp.Net ValidationGroup验证正确,除了输入密钥

说明: 我在Master页面中有ID和密码字段,带有Log On按钮。这些在“LoginValidationGroup”中,它们工作正常。

现在,在Default.aspx中,我有一个电子邮件文本框和提交按钮,它们在“NotifyMeValidation”组中,并且它们也可以工作,但是如果按Enter键而不是按下提交按钮,则不是。 “提交”按钮正常工作 - 输入密钥...并非如此。

即使TextBox设置为CausesValidation =“true”,并且它位于NotifyMeValidation组中,Enter键仍会在LoginValidationGroup上进行验证。

我保证人们会在该框中输入一个电子邮件并按Enter键。我会!!!当他们这样做时,他们会在顶部看到一个标注气球,告诉他们用户ID是必需的。

这是什么错误?如果我需要发布实际的代码,我可以这样做。

其实,让我继续做下去。

从Default.aspx的:

<asp:RequiredFieldValidator 
    runat="server" 
    ValidationGroup="NotifyMeValidation" 
    ID="EmailRequiredValidator" 
    ControlToValidate="SenderEmailTextBox" 
    ErrorMessage="Email is Required" 
    Display="None" /> 
<ajaxToolkit:ValidatorCalloutExtender 
    runat="Server" 
    PopupPosition="Left" 
    ID="EmailRequiredValidatorExtender" 
    Width="185px" 
    TargetControlID="EmailRequiredValidator" 
    WarningIconImageUrl="/Images/warning.gif" /> 
<asp:Label ID="SenderEmailLabel" runat="server" ssociatedControlID="SenderEmailTextBox" EnableViewState="false" Text="Email:"></asp:Label>&nbsp;&nbsp; 
<asp:TextBox ID="SenderEmailTextBox" runat="server" ValidationGroup="NotifyMeValidation" Width="350" BackColor="#cccccc" CausesValidation="true"></asp:TextBox> 
<br /><br /> 
<asp:Button ID="SubmitButton" runat="server" ValidationGroup="NotifyMeValidation" EnableViewState="false" CssClass="submit" Text="Send" CausesValidation="true" OnClick="btnSubmit_Click" /> 

从母版页:

<asp:Label CssClass="LoginHeading" ID="UserNameLabel" runat="server" AssociatedControlID="UserNameTextbox">UserName:&nbsp;</asp:Label> 
<asp:TextBox CssClass="LoginTextBox" ID="UserNameTextbox" runat="server" ValidationGroup="LoginValidation" CausesValidation="True"></asp:TextBox>&nbsp; 
<asp:Label CssClass="LoginHeading" ID="PasswordLabel" runat="server" AssociatedControlID="PasswordTextbox">Password:&nbsp;</asp:Label> 
<asp:TextBox CssClass="LoginTextBox" ID="PasswordTextBox" runat="server" TextMode="Password" ValidationGroup="LoginValidation" CausesValidation="True"></asp:TextBox>&nbsp; 
<asp:Button CssClass="LoginHeading" ID="LoginButton" runat="server" Text="Button" CommandName="Login" ValidationGroup="LoginValidation" CausesValidation="True" onclick="LoginButton_Click" /> 

和法师页面验证...

<asp:RequiredFieldValidator runat="server" ID="UIDRequired" 
    ValidationGroup="LoginValidation" 
    ControlToValidate="UserNameTextbox" 
    Display="None" 
    ErrorMessage="<b>Required Field Missing</b><br />A User ID is required." /> 
<ajaxToolkit:ValidatorCalloutExtender 
    runat="Server" 
    ID="UIDValidationExtender" 
    PopupPosition="Left" 
    Width="185px" 
    TargetControlID="UIDRequired" 
    WarningIconImageUrl="/Images/warning.gif" /> 
<asp:RequiredFieldValidator runat="server" ID="PWRequired" 
    ValidationGroup="LoginValidation" 
    ControlToValidate="PasswordTextbox" 
    Display="None" 
    ErrorMessage="<b>Required Field Missing</b><br />A password is required." /> 
<ajaxToolkit:ValidatorCalloutExtender 
    runat="Server" 
    ID="PWValidationExtender" 
    PopupPosition="Left" 
    TargetControlID="PWRequired" 
    Width="185px" 
    WarningIconImageUrl="/Images/warning.gif" /> 
<asp:CustomValidator 
    runat="server" 
    Display="None" 
    ValidationGroup="LoginValidation" 
    ID="CustomUserExistsValidator" 
    ControlToValidate="UserNameTextbox" 
    ErrorMessage="<b>Invalid UserID!</b><br />User ID doesn't exist. Please try again.<br />" 
    OnServerValidate="CustomCheckUserExists"/> 
<ajaxToolkit:ValidatorCalloutExtender 
    runat="server" 
    PopupPosition="Left" 
    ID="UserIDCalloutExtender" 
    TargetControlID="CustomUserExistsValidator" 
    Width="185px" 
    WarningIconImageUrl="/Images/warning.gif" /> 
<asp:CustomValidator 
    runat="server" 
    ID="CustomPWValidator" 
    Display="None" 
    ValidationGroup="LoginValidation" 
    ControlToValidate="PasswordTextbox" 
    ErrorMessage="<b>Invalid Password!</b><br />Please try again.<br />" 
    OnServerValidate="CustomValidatePassword"/> 
<ajaxToolkit:ValidatorCalloutExtender 
    runat="server" 
    PopupPosition="Left" 
    ID="PWCalloutExtender" 
    TargetControlID="CustomPWValidator" 
    Width="185px" 
    WarningIconImageUrl="/Images/warning.gif" /> 
<asp:CustomValidator 
    runat="server" 
    ID="CustomUserApprovedValidator" 
    Display="None" 
    ValidationGroup="LoginValidation" 
    ControlToValidate="UserNameTextbox" 
    ErrorMessage="<b>Approval Error!</b><br />This UserID exists, but is not yet approved.<br />" 
    OnServerValidate="CustomCheckUserApproved"/> 
<ajaxToolkit:ValidatorCalloutExtender 
    runat="server" 
    PopupPosition="Left" 
    ID="UserApprovedCalloutExtender" 
    TargetControlID="CustomUserApprovedValidator" 
    Width="185px" 
    WarningIconImageUrl="/Images/warning.gif" /> 

回答

3

尝试增加周围的每一个<asp:Panel>设置控件并将DefaultButton property设置为您想在t时点击的按钮的ID他用户点击输入

+0

甜!理查德,工作很好,而且实施起来非常简单!感谢您的提示! – DJGray 2013-03-12 20:06:23

+0

+1这比我的解决方案好得多。 – 2013-03-12 20:14:12

1

为了解释这里发生了什么,当您按下文本框上的回车键时,aspx的默认按钮被触发。为了处理这个问题,你可以在文本框中点击回车键时触发一些jQuery代码,然后这段代码将执行你所需要的特定按钮的点击。 Check this