Ich habe einige Code, wo ich zwei separate erforderliche Feldgültigkeiten für ein Steuerelement, beide in separaten Validierungsgruppen, die dann durch zwei separate Schaltflächen validiert sind.Wie kann ich ASP.NET erforderlichen Feld validator "verlorenes Fokus" Verhalten deaktivieren
Dieser Ansatz funktioniert gut, wenn auf die Schaltflächen geklickt wird, aber beide Validatoren zeigen, wenn ich einen Wert in das Textfeld einfüge und ihn dann entferne.
Gibt es eine Möglichkeit, diese Validierung des "verlorenen Fokus" zu deaktivieren? Ich brauche es nur zu validieren, wenn auf die Schaltflächen geklickt wird.
EDIT
Leider, wenn ich EnableClientScript gesetzt = false dann nicht, daß ich keine Client-Benachrichtigungen haben. Ich möchte, dass die dynamische Fehlermeldung (effektiv im OnClientClick-Ereignis der Schaltfläche) angezeigt wird, nicht aber der "verlorene Fokus" der Textbox.
Gibt es eine Möglichkeit, das lostfocus-Client-Event zu deaktivieren oder zu "aushängen"?
EDIT
Eine Kombination dDejan Antwort und answeer des womp here das Problem perfekt sortiert.
Mein letzter Code sieht wie folgt aus (für alle anderen mit einer ähnlichen Situation) ...
Javascript ...
<script type="text/javascript">
$(document).ready(function() {
$('body').fadeIn(500);
//Turn off all validation = its switched on dynamically
$.each(Page_Validators, function(index, validator) {
ValidatorEnable(validator, false);
});
});
function ToggleValidators(GroupName) {
$.each(Page_Validators, function(index, validator) {
if (validator.validationGroup == GroupName) {
ValidatorEnable(validator, true);
} else {
ValidatorEnable(validator, false);
}
});
}
</script>
ASPX Kontrollbeispiel ...
<telerik:RadTextBox Width="196px" ID="txtFirstName" runat="server" MaxLength="50" Skin="Black"></telerik:RadTextBox>
<asp:RequiredFieldValidator ID="valFirstName" CssClass="Validator" runat="server" EnableClientScript="true" Display="Dynamic" ErrorMessage="You must enter your first name." ControlToValidate="txtFirstName" ValidationGroup="NeededForEmail"></asp:RequiredFieldValidator>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" CssClass="Validator" runat="server" EnableClientScript="true" Display="Dynamic" ErrorMessage="You must enter your first name." ControlToValidate="txtFirstName" ValidationGroup="NeededForSubmit"></asp:RequiredFieldValidator>
ASPX-Tastencode ...
<asp:Button ID="btnGetConfCode" runat="server" Text="Get Confirmation Code" OnClientClick="ToggleValidators('NeededForEmail')" OnClick="btnGetConfCode_Click" Width="100%" ValidationGroup="NeededForEmail"/>
<asp:Button ID="btnRegisterUser" runat="server" Text="Register" OnClientClick="ToggleValidators('NeededForSubmit')" OnClick="btnRegisterUser_Click" Width="100px" ValidationGroup="NeededForSubmit" />
Nun gibt es keine Validierung, bis ein Benutzer entweder auf die Schaltfläche "E-Mail-Bestätigungscode abrufen" oder auf die Schaltfläche "Registrieren" klickt.
Wenn sie auf die Schaltfläche "E-Mail-Bestätigungscode abrufen" klicken, werden alle Steuerelemente außer dem Textfeld validiert, in dem der Benutzer den E-Mail-Validierungscode eingeben muss.
Wenn sie auf die Schaltfläche "Registrieren" klicken, werden alle Steuerelemente validiert und es wird nur eine Validierungsnachricht angezeigt.
Wenn eine der beiden Tasten gedrückt wird, geht der Benutzer zurück, fügt hinzu und entfernt dann etwas Text, dann sehen wir nur noch einen Validator. Vor dieser Änderung haben Sie immer beide Nachrichten gesehen, die dasselbe sagten.
Vielen Dank für die Hilfe Jungs
Ich weiß, das alt sein könnte, aber sobald der Validator onSubmit aktiviert wurde, wie man es wieder schalte auf Fokus, so dass die Fehlermeldung verschwindet, bis der Absenden-Button erneut angeklickt wird? – SollyM