Ho un campo nascosto con una convalida per come qui sottoclient validazione lato non funziona per il campo nascosto in asp.net MVC 3
@Html.HiddenFor(m => m.Rating)
@Html.ValidationMessageFor(m => m.Rating)
La proprietà Rating
ha Range
attributo validatore applicato con gamma essendo 1- 5. Questo è inserito in un modulo con un pulsante di invio.
mi hanno poi avuto seguito jquery che imposta il valore nel campo nascosto in qualche evento utente (in pratica l'utente fa clic su alcune stelle a votarla)
$(".star").click(function(){
$("#Rating").val(2);
});
Ora, se io inviare il modulo senza l'evento utente che imposta il campo nascosto, la validazione funziona. I messaggi di errore sono visualizzati correttamente e funzionano su tutti i client.
Ora, in questa situazione, se faccio clic su stelle, che invoca il javascript sopra a imposta il campo nascosto, il messaggio di errore di convalida non scomparirà. Posso inviare il modulo dopo che la variabile nascosta ha un valore valido. Ma mi aspetto che la convalida del lato client dovrebbe funzionare. (Quando la variabile nascosta è stata impostata con un valore valido, l'errore di convalida dovrebbe andare via)
Inizialmente pensavo, la convalida jquery sarebbe stata invocata su alcuni eventi speciali, quindi ho provato a fare clic su, cambiare, keyup, sfocatura e eventi di messa a fuoco me stesso come sotto
$(".star").click(function(){
$("#Rating").val(2);
$("#Rating").change();
});
Ma questo non funziona ancora. I messaggi di errore, una volta visualizzati, non spariscono affatto.
Non penso che tu abbia bisogno della chiamata a form() alla fine di la dichiarazione di cui sopra. –
'form()' è necessario per aggiornare i messaggi di errore sul modulo. Poiché la domanda riguardava un aggiornamento immediato dei messaggi di errore, è necessario. – counsellorben
@counsellorben Che ha funzionato come un fascino – Suhas