livequery non sempre vivo quando viene utilizzato con jquery.validate
-
28-09-2019 - |
Domanda
Io uso plug jquerylive aggiungere classi CSS aggiuntive per .field convalida errori classe come questa:
$(".field-validation-error").livequery(function () {
$(this).addClass('ui-state-error ui-corner-all');
});
quando ricevo alcune campate con questa classe generata da jquery.validate le opere di codice di cui sopra, ma al 2 ° convalida non è così.
ecco il link live: http://mrgsp.md:8080 / impressionante / persona cliccare sul creare dopo fare clic su Salva per ottenere messaggi di convalida e clicca di nuovo su Salva
Soluzione
Perché non collegare la vostra funzione nella stessa evento che attiva validate ()?
Aggiorna
Ho letto gli altri commenti e vide che si stava utilizzando xVal, leggere un po 'sul jQuery.Validate pure. legami jQuery.Validate in con molti eventi e la registrazione sul gestori di eventi sarebbe disordinato. La ragione per cui livequery funziona prima volta è che le etichette vengono generati se non esistono in precedenza in modo tale evento creazione fa girare il funzionamento, ogni volta dopo l'etichetta è solo nascosto / visualizzato in modo che non venga ancora una volta innescato, ma jQuery. la funzione showLabel di convalidare azzera le classi.
Il luogo ideale è in xVal facendo una piccola modifica nel file xVal.jquery.validate.js
. Nel metodo _ensureFormIsMarkedForValidation
sono le linee:
ensureFormIsMarkedForValidation: function(formElement, options) {
if (!formElement.data("isMarkedForValidation")) {
formElement.data("isMarkedForValidation", true);
var validationOptions = {
errorClass: "field-validation-error",
Tutto quello che dovrebbe essere necessario fare è cambiare errorClass a:
errorClass: "field-validation-error ui-state-error ui-corner-all",
Questo perché xVal sta facendo la creazione di plugin validate.
Altri suggerimenti
si può non solo l'opzione errorClass?
$(".selector").validate({
errorClass: "field-validation-error ui-state-error ui-corner-all"
})
O forse:
$.validator.setDefaults({
errorClass: "field-validation-error ui-state-error ui-corner-all"
});