2013-03-12 2 views
0

여기이 문제에 매우 가까운 여러 질문을 보았지만이 특정 시나리오에 적합한 것은 아닙니다.asp.Net ValidationGroup은 Enter 키를 제외하고 올바르게 확인됩니다.

설명 : 마스터 페이지에 로그온 버튼이있는 ID 및 암호 필드가 있습니다. 이들은 "LoginValidationGroup"에 있으며 제대로 작동합니다.

이제 Default.aspx에서 "NotifyMeValidation"그룹에있는 전자 메일 TextBox 및 제출 단추가 있으며 작동하지만 제출 단추가 아니라 Enter 키를 누르면 작동합니다. 제출 버튼이 잘 작동합니다. Enter 키를 누르십시오.

Enter 키를 누르면 TextBox가 CausesValidation = "true"로 설정되어 있고 NotifyMeValidation 그룹에있는 경우에도 LoginValidationGroup에서 유효성 검사가 수행됩니다.

사람들이 그 상자에 이메일을 입력하고 Enter를 누르는 것을 보장합니다. 나는 할 것이다 !!! 그리고 그들이 할 때, 그들은 사용자 ID가 필요하다는 것을 알려주는 콜 아웃 풍선 (ballout balloon)을 보게 될 것입니다.

이곳에 무슨 문제가 있습니까? 실제 코드를 게시해야한다면 그렇게 할 수 있습니다.

사실, 그냥 계속하겠습니다. 마스터 페이지에서

<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" /> 

: Default.aspx를에서

<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:Panel>를 추가

<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

시도 컨트롤 세트를 클릭하고 DefaultButton property을 t를 클릭 할 때 클릭하려는 ID로 설정합니다. 사용자가 을 입력을 입력하십시오.

+0

Sweet !! 리차드, 그것은 아름답게 작동했고, 구현하는 것이 매우 쉬웠습니다! 팁 주셔서 감사! – DJGray

+0

+1 이것은 내 솔루션보다 훨씬 낫습니다. –

1

여기서 무슨 일이 일어나고 있는지 설명하기 위해 텍스트 상자에서 Enter 키를 누르면 aspx의 기본 버튼이 실행됩니다. 이를 처리하기 위해 텍스트 상자에서 Enter 키를 클릭하면 jQuery 코드를 실행할 수 있습니다. 그러면이 코드는 필요한 특정 단추를 클릭하여 수행합니다. Check this