Tôi có một biểu mẫu với nhiều trường mà tôi đang xác thực (một số có các phương thức được thêm vào để xác thực tùy chỉnh) với plugin Xác thực jQuery tuyệt vời của Jörn Zaeffere. Làm thế nào để bạn phá vỡ xác nhận với các điều khiển gửi được chỉ định (nói cách khác, xác thực cháy với một số đầu vào gửi, nhưng không kích hoạt xác thực với những người khác)? Điều này sẽ tương tự như Nhóm xác thực với các điều khiển trình xác nhận ASP.NET tiêu chuẩn.
Hoàn cảnh của tôi:
Đó là với ASP.NET WebForms, nhưng bạn có thể bỏ qua điều đó nếu muốn. Tuy nhiên, tôi đang sử dụng xác thực nhiều hơn dưới dạng "đề xuất": nói cách khác, khi biểu mẫu được gửi, xác thực sẽ kích hoạt nhưng thay vì hiển thị thông báo "bắt buộc", "đề xuất" hiển thị có nội dung "bạn" bỏ lỡ các trường sau .... bạn có muốn tiếp tục không? " Tại thời điểm đó trong bộ chứa lỗi, có một nút gửi khác hiện rõ có thể được nhấn, có thể bỏ qua xác nhận và gửi mọi cách. Làm cách nào để phá vỡ các biểu mẫu .validate () cho nút điều khiển này và vẫn đăng?
Mẫu Mua và Bán một ngôi nhà tại http://jquery.bassistance.de/validate/demo/multipart/ cho phép điều này để đạt được các liên kết trước đó, nhưng nó thực hiện thông qua việc tạo các phương thức tùy chỉnh và thêm nó vào trình xác nhận. Tôi muốn không phải tạo các phương thức tùy chỉnh sao chép chức năng đã có trong plugin xác thực.
Sau đây là phiên bản rút gọn của tập lệnh áp dụng ngay lập tức mà tôi có ngay bây giờ:
var container = $("#<%= Form.ClientID %> div.validationSuggestion");
$('#<%= Form.ClientID %>').validate({
errorContainer: container,
errorLabelContainer: $("ul",container),
rules: {
<%= YesNo.UniqueID %>: { required: true },
<%= ShortText.UniqueID %>: { required: true } // etc.
},
messages: {
<%= YesNo.UniqueID %>: 'A message.',
<%= ShortText.UniqueID %>: 'Another message.' // etc.
},
highlight: function(element, errorClass) {
$(element).addClass(errorClass);
$(element.form).find("label[for=" + element.id + "]").addClass(errorClass);
$(element.form).find("label[for=" + element.id + "]").removeClass("valid");
},
unhighlight: function(element, errorClass) {
$(element).removeClass(errorClass);
$(element.form).find("label[for=" + element.id + "]").removeClass(errorClass);
$(element.form).find("label[for=" + element.id + "]").addClass("valid");
},
wrapper: 'li'
});