Possiedo un progetto MVC ASP.Net e sto utilizzando la convalida jQuery non invadente. per aggiungere la convalida quando un elemento perde attenzione, sto chiamando
$(document).ready(function() {
// enable validation when an input loses focus.
var settngs = $.data($('form')[0], 'validator').settings;
settngs.onfocusout = function (element) { $(element).valid(); };
});
Questo sta lavorando su un progetto mentre si genera questa eccezione su un altro progetto, perché $ .data ($ ('forma') [0], ' validatore ') restituisce indefinito ($ .data ($ (' forma ') [0]) restituisce un oggetto vuoto):
Uncaught TypeError: Cannot read property 'settings' of undefined
Tuttavia jQuery convalida sta lavorando bene quando si preme il pulsante di invio, quindi tutto il resto dovrebbe essere impostato correttamente
Sto caricando questi script al termine del tag body: (la funzione di cui sopra è in customvalidations.js quindi dovrebbe eseguire dopo il validatore viene applicato al modulo)
<script src="/Staffing/Scripts/jquery-2.1.1.js"></script>
<script src="/Staffing/Scripts/globalize/globalize.js"></script>
<script src="/Staffing/Scripts/globalize/cultures/globalize.culture.de-DE.js"></script>
<script src="/Staffing/Scripts/bootstrap.js"></script>
<script src="/Staffing/Scripts/respond.js"></script>
<script src="/Staffing/Scripts/bootstrap-datepicker.js"></script>
<script src="/Staffing/Scripts/bootstrap-datepicker-globalize.js"></script>
<script src="/Staffing/Scripts/locales/bootstrap-datepicker.de.js"></script>
<script src="/Staffing/Scripts/jquery.unobtrusive-ajax.js"></script>
<script src="/Staffing/Scripts/jquery.validate.js"></script>
<script src="/Staffing/Scripts/jquery.validate.globalize.js"></script>
<script src="/Staffing/Scripts/jquery.validate.unobtrusive.js"></script>
<script src="/Staffing/Scripts/localization/messages_de.js"></script>
<script src="/Staffing/Scripts/customvalidations.js"></script>
<script src="/Staffing/Scripts/uiadditions.js"></script>
<script src="/Staffing/Scripts/default.js"></script>
Soluzione: Questo è il codice che funziona:
$(document).ready(function() {
// enable validation when an input loses focus.
var allForms = $('form');
$.each(allForms, function (key, value) {
var val = $.data(value, 'validator');
if (val != undefined) {
var settngs = val.settings;
settngs.onfocusout = function (element) { $(element).valid(); };
}});
});
il problema era che i nuovi controlli di convalida del plugin se ci sono elementi presenti che dovrebbero essere convalidati e ho avuto 2 moduli sul SA la mia pagina con il primo modulo che non ha elementi di input convalidati.
Questa è stata la causa. Vedi la mia domanda modificata per il codice che funziona. – wertzui
Solo wow. Noi co-optiamo per un controllo dinamico senza ostriche: letteralmente impostando solo un contenitore div da qualche parte sotto il modulo, abbiamo ripristinato tutte le nostre convalide interrotte. Questo è stato difficile da trovare, e questa risposta è stata molto utile. Grazie. – twip