utilizzando jQuery convalida discreto all'interno di un progetto NET MVC e che sembra funzionare bene. Ora sto cercando di mostrare un segno di spunta verde quando il campo si convalida correttamente (lato client e/o remoto).jQuery convalida discreto in .NET MVC 3 - che mostra successo segno di spunta
Ecco una dichiarazione di campo di esempio:
<div class="clearfix">
@Html.LabelFor(model => model.Address1, "Street")
<div class="input">
@Html.TextBoxFor(model => model.Address1, new { @class = "xlarge", @maxlength = "100", @placeholder = "e.g. 123 Main St" })
<span class="help-message">
@Html.ValidationMessageFor(model => model.Address1)
<span class="isaok">Looks great.</span>
</span>
<span class="help-block">Enter the street.</span>
</div>
</div>
Quello che mi piacerebbe fare è aggiungere una classe 'attiva' per il "span.isaok" che a sua volta ha un segno di spunta per un'immagine di sfondo.
Ho provato usando luce/unhighlight:
$.validator.setDefaults({
onkeyup: false,
highlight: function (element, errorClass, validClass) {
$(element).addClass(errorClass).removeClass(validClass);
$(element.form).find("label[for=" + element.id + "]").addClass("error");
$(element).parent().find("span.isaok").removeClass("active");
},
unhighlight: function (element, errorClass, validClass) {
$(element).removeClass(errorClass).addClass(validClass);
$(element.form).find("label[for=" + element.id + "]").removeClass("error");
if ($(element).val().length > 0) {
$(element).parent().find("span.isaok").addClass("active");
}
}
});
ma che mostra un segno di spunta verde per tutti i campi, anche se sono vuote! (Da cui ovviamente sbagliato)
poi ho provato ad utilizzare l'opzione 'successo', ma che non sembra mai essere licenziato.
Cosa mi manca?
Edit: Così ho trovato this blog post ed è stato in grado di sfruttare la funzione di successo cioè
$(function() {
var settings = $.data($('form')[0], 'validator').settings;
settings.onkeyup = false;
settings.onfocusout = function (element) { $(element).valid(); };
var oldErrorFunction = settings.errorPlacement;
var oldSuccessFunction = settings.success;
settings.errorPlacement = function (error, inputElement) {
inputElement.parent().find("span.isaok").removeClass("active");
oldErrorFunction(error, inputElement);
};
settings.success = function (label) {
var elementId = '#' + label.attr("for");
$(elementId).parent().find("span.isaok").addClass("active");
oldSuccessFunction(label);
};
});
ma ora se la forma non è valido lo dimostra sia il messaggio di errore e il marchio valido .. .
e quest'ultimo scompare non appena clicco qualsiasi punto della pagina.
+1 Old Post, ma questo sembra essere il caso. Sono passato a min e il suo funzionamento. Nessun indizio perché. – Botonomous