Aggiornamento messaggio di errore ValidatorCallOut da JavaScript
-
12-09-2019 - |
Domanda
Sto cercando di aggiornare il messaggio di errore per un CustomValidator che utilizza un ValidatorCallOut tramite JavaScript. Fondamentalmente il suo controllo per vedere se un numero inserito è un incremento di un numero specificato. Ho qualche codice che aggiornerà il messaggio di errore la prima volta che viene eseguito, ma dopo che non è più aggiornerò il messaggio di errore, anche se tramite JavaScript avvisi vedo i valori sono in realtà in fase di aggiornamento. Ecco la funzione di validazione JavaScript lato client che sto usando:
function checkIncrement(sender, args) {
var incrementValue = parseInt(sender.orderIncrement); // Custom attribute registered with RegisterExpandoAttribute
var remainder = args.Value % incrementValue;
if ((remainder) != 0) {
var remainder, lowRange, highRange;
lowRange = parseInt(args.Value - remainder);
highRange = parseInt(lowRange + incrementValue);
sender.errormessage = "Closest possible values are <b>" + lowRange + "</b> or <b>" + highRange + "</b>"; // Gets updated once, but not after that
alert("Low Range: " + lowRange); // always updated with current value
args.IsValid = false;
return;
}
args.IsValid = true;
}
Qualche idea su come mantenere il messaggio di errore aggiornato ogni volta che questo viene eseguito per convalidare?
Soluzione
Provare quanto segue:
sender.errormessage = "Your message here";
var cell = sender.ValidatorCalloutBehavior._errorMessageCell;
// cell is going to be null first time.
if (cell != null) {
cell.innerHTML = "Your message here";
}
Il motivo per cui il messaggio si attacca una volta che è stato inizializzato perché didascalia non viene creato inizialmente. Una volta che è stato creato, didascalia è solo nascosto e non viene ricreata sulla successiva mostra. Così, il messaggio che è stato inizializzato con la data di creazione si attacchi e persistono. Il codice di cui sopra è un hack e ci realmente dovrebbe essere un metodo lungo le linee di set_ErrorMessage, ma non ce n'è uno.