Estoy trabajando en un proyecto con MVC3 y estoy tratando de integrar qTip2 con la validación de jQuery para mostrar los errores como sugerencias flotantes. El problema que estoy teniendo es que al parecer llamar a errorPlacement en la validación del formulario no está haciendo nada, supongo que tiene algo que ver con la forma en que MVC lo maneja.Integración de qTip con MVC3 y jQuery Validación (errorPlacement)
Básicamente, lo que quiero hacer es usar la validación integrada entre MVC3 y jQuery (anotaciones) pero también se integra con qTip para cambiar cómo se muestra el mensaje de error.
He buscado por todas partes y lo mejor que he podido encontrar es que alguien sugirió modificar la función jquery.validate.unobtrusive.js - onError, pero lo he comprobado y no tenía idea de cómo modificarlo correctamente, y preferiría un solución que no requería que alterara las secuencias de comandos existentes.
Gracias por su ayuda.
Lo que tengo hasta ahora:
Mi Modelo:
public class User
{
[Required]
public string Id { get; set; }
[Required]
[DataType(DataType.EmailAddress)]
public string Email { get; set; }
public string FirstName { get; set; }
public string SecondName { get; set; }
public string LastName { get; set; }
}
Mi Javascript en mi opinión:
$('#Form').validate({
errorClass: "errormessage",
errorClass: 'error',
validClass: 'valid',
errorPlacement: function (error, element) {
// Set positioning based on the elements position in the form
var elem = $(element),
corners = ['left center', 'right center'],
flipIt = elem.parents('span.right').length > 0;
// Check we have a valid error message
if (true) {
// Apply the tooltip only if it isn't valid
elem.filter(':not(.valid)').qtip({
overwrite: false,
content: error,
position: {
my: corners[flipIt ? 0 : 1],
at: corners[flipIt ? 1 : 0],
viewport: $(window)
},
show: {
event: false,
ready: true
},
hide: false,
style: {
classes: 'ui-tooltip-red' // Make it red... the classic error colour!
}
})
// If we have a tooltip on this element already, just update its content
.qtip('option', 'content.text', error);
}
// If the error is empty, remove the qTip
else { elem.qtip('destroy'); }
},
success: $.noop // Odd workaround for errorPlacement not firing!
})
$('#Form').submit(function() {
if (!$(this).valid())
return false;
$.ajax({
url: this.action,
type: this.method,
data: $(this).serialize(),
beforeSend: function() {
},
success: function (result) {
},
error: function (result) {
}
});
return false;
});
La solución anterior resolvió el problema que mencioné también. ¡Gracias! –
¿Alguna idea sobre cómo mostrar la sugerencia para los mensajes de validación del lado del servidor que vuelven después de una publicación en el servidor? –
@ Nick-Olsen: la integración de qTip funciona con la validación del lado del cliente de jQuery ... Para implementarlo para la validación del lado del servidor, supongo que debe programarlo caso por caso. Pero no estoy seguro si hay una mejor manera. Creo que esta podría ser una pregunta en sí misma. Publiquelo para que pueda obtener ayuda de toda la comunidad ... – AJC