Ho un codice in cui ho bisogno di due validatori di campo obbligatori separati per un controllo, entrambi in gruppi di convalida separati che vengono poi convalidati da due pulsanti separati.Come posso disattivare il funzionamento del validatore di campo richiesto ASP.NET "lost focus"
Questo approccio funziona bene quando si fa clic sui pulsanti, ma entrambi i validatori mostrano se inserisco un valore nella casella di testo e quindi lo rimuovo.
C'è un modo per disattivare questa convalida di "smarrimento"? Ho solo bisogno di convalidare quando si fa clic sui pulsanti.
EDIT
Purtroppo, se ho impostato EnableClientScript = false allora non ho notifiche client. Quello che voglio è che il messaggio di errore dinamico mostri (efficacemente nell'evento OnClientClick del pulsante) ma non il "focus perso" della casella di testo.
C'è un modo per disabilitare o "sganciare" l'evento del client lostfocus?
EDIT
Una combinazione risposta di dDejan e answeer di womp here ordinati il problema perfettamente.
Il mio codice finale si presenta così (per chiunque altro con una situazione simile) ...
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 controllo Esempio ...
<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>
Codice pulsante ASPX ...
<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" />
Quindi, ora non c'è alcuna convalida finché un utente non fa clic sul pulsante "Ottieni il codice di conferma via email" o sul pulsante "Registrati".
Se fanno clic sul pulsante "Ottieni il codice di conferma via e-mail", tutti i controlli vengono convalidati indipendentemente dalla casella di testo in cui l'utente deve inserire il codice di convalida dell'email e viene visualizzato solo un messaggio di convalida.
Se fanno clic sul pulsante "Registra", tutti i controlli vengono convalidati e viene visualizzato solo un messaggio di convalida.
Se uno dei due pulsanti viene premuto, l'utente torna indietro, aggiunge e quindi rimuove del testo, quindi viene visualizzato un solo validatore. Prima di questo cambiamento, si vedevano entrambi i messaggi che dicevano la stessa cosa.
Grazie per aiuto ragazzi
So che questo potrebbe essere vecchio, ma una volta che il Validator è stato attivato onSubmit, come si fa a spegnerlo nuovamente sul fuoco, in modo che il messaggio di errore scompare fino a quando non viene fatto nuovamente clic sul pulsante di invio? – SollyM