Pracuję nad programem proyect z MVC3 i próbuję zintegrować qTip2 z walidacją jQuery, aby pokazać błędy jako pływające wskazówki. Problem, który mam, polega na tym, że najwyraźniej wywoływanie błędu błędu przy sprawdzaniu poprawności formularza nic nie robi, domyślam się, że ma to coś wspólnego ze sposobem, w jaki to robi MVC.Integracja qTip z MVC3 i jQuery Validation (errorPlacement)
Zasadniczo chcę użyć zintegrowanego sprawdzania poprawności między MVC3 i jQuery (adnotacje), ale także zintegrować z qTip, aby zmienić sposób wyświetlania komunikatów o błędach.
Przeszukałem wszystko, a najlepsze, co mogłem znaleźć, to sugestia modyfikująca jquery.validate.unobtrusive.js - funkcja onError, ale sprawdziłam go i nie miałam pojęcia, jak go właściwie zmodyfikować, a także wolę rozwiązanie, które nie wymagało ode mnie zmiany istniejących skryptów.
Dziękuję za pomoc.
Co mam tak daleko:
Moja Model:
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; }
}
Moje javascript moim zdaniem:
$('#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;
});
Powyższe rozwiązanie rozwiązało problem, o którym wspomniałem. Dzięki! –
Jakieś pomysły dotyczące wyświetlania porady dotyczącej komunikatów sprawdzania po stronie serwera, które powracają po wysłaniu postu na serwer? –
@ Nick-Olsen - Integracja qTip działa z walidacją po stronie klienta jQuery ... Aby zaimplementować ją do walidacji po stronie serwera, musisz ją zaprogramować w każdym indywidualnym przypadku. Ale nie jestem pewien, czy istnieje lepszy sposób. Myślę, że to może być kwestia sama w sobie. Opublikuj go, aby uzyskać pomoc od całej społeczności ... – AJC