2011-09-26 39 views
5

Có thể sử dụng thuộc tính dữ liệu với plugin JQuery Validate không. Tôi hiện đang sử dụng tên lớp, ví dụ:Sử dụng thuộc tính dữ liệu với jquery xác nhận

class="{required:true, messages:{required:'You must choose a site.'}}"` 

nhưng cần sử dụng thuộc tính dữ liệu, ví dụ:

data-validate="{required:true, messages:{required:'You must choose a site.'}}"` 

Các yếu tố đầu vào có thể có nhiều thuộc tính dữ liệu được liên kết với nó sẽ không liên quan đến xác thực, ví dụ:

<input name="txt_txt001" type="text" maxlength="30" id="txt_txt001" class= "  
{required:true, messages:{required:'This field is required.'} }" data- 
children="ddl_txt007,ddl_txt008" data-optionGroup="1" data-optionGroupParent="" /> 

Tôi biết plugin ketchup cung cấp tính năng này nhưng không muốn chuyển sang nó khi tôi tải nhiều công việc vào việc thiết lập trang bằng Xác thực JQuery.

Cảm ơn

Trả lời

1

tôi havent sử dụng plugin, nhưng có vẻ không phải là một built-in tùy chọn để thay đổi thuộc tính từ nơi rồi nó lấy quy tắc. Nhưng nếu bạn nhìn vào nguồn không nén tại dòng 767, bạn sẽ thấy phương thức classRules.

Trong phương pháp này tại dòng 769 có:

var classes = $(element).attr('class'); 

Bạn có thể cố gắng để thay đổi điều này để:

var classes = $(element).attr('data-validate'); 

Như đã nói, tôi havent thử nghiệm này, mặc dù nó có vẻ hợp lý hơn và ngữ nghĩa để đặt loại nội dung này vào thuộc tính dữ liệu so với lớp như plugin cho mỗi mặc định.

+0

Xin chào David, tôi đã đề xuất của bạn nhưng tôi không thể làm cho nó hoạt động. Cảm ơn – Clawg

+0

Nhiều khả năng: $ (phần tử) .data ('validate'); – molokoloco

1

ASP.NET MVC 3 kết hợp xác thực không phô trương bằng cách sử dụng thuộc tính HTML5 data-. Tệp jquery.validate.unobtrusive.js trong khung công tác MVC 3 phân tích các thuộc tính dữ liệu và thêm các quy tắc vào jquery.validate.js.

Bạn có thể tìm hiểu thêm chi tiết trong this article.

6

Hãy thử thực hiện các chages sau để xác thực 1.9.0. Tôi đã thực hiện một vài mods nên số dòng của tôi có thể được tắt, nhưng ở đây đi:

Khoảng ln 149:

var data = $.validator.normalizeRules(
    $.extend(
     {}, 
     $.validator.metadataRules(element), 
     $.validator.classRules(element), 
     $.validator.dataRules(element), // add this 
     $.validator.attributeRules(element), 
     $.validator.staticRules(element) 
    ), element); 

Thêm này sau khi classRules xung quanh ln 782:

// pretty much steal everything from the class based settings 
dataRules: function(element) { 
    var rules = {}; 
    var classes = $(element).data("validation"); 
    classes && $.each(classes.split(' '), function() { 
     if (this in $.validator.classRuleSettings) { 
      $.extend(rules, $.validator.classRuleSettings[this]); 
     } 
    }); 
    return rules; 
}, 

Thêm bất kỳ trình xác thực bổ sung nào vào quy tắc lớp học:

jQuery.validator.addClassRules({ 
    phone: { 
     phoneUS: true 
    }, 
    zipcode: { 
     zipcode: true 
    }, 
    notFirstSelect: { 
     notFirstSelect : true 
    } 
}); 

Sau đó thêm data-validation thuộc tính cho các trường của bạn:

<input type="text" data-validation="zipcode required" maxlength="10" class="inputText med" value="" name="zip" id="zip"> 

Điều này đã làm việc thực sự tốt cho tôi. Hãy xem: http://www.roomandboard.com/rnb/business_interiors/contactus/send.do để biết ví dụ về điều này đang được sử dụng.

+0

điều này thực sự thú vị nhưng tôi nghĩ bạn đang tái phát minh ra bánh xe. Đã có các trình tạo phân tích và trình phân tích cú pháp không phô trương cho hầu hết các nền tảng chính – Milimetric

1

Tôi biết điều này là cũ, nhưng tôi chỉ tình cờ gặp phải điều gì đó có liên quan. Tôi figured vì không có câu trả lời được chấp nhận bạn vẫn có thể cần một?Dù sao, David là thực sự gần:

var classes = $(element).data("validate");

này nên lấy nội dung của thuộc tính dữ liệu Xác thực của bạn. Từ đó bạn sẽ có thể phân tích cú pháp hoặc truyền giá trị như bạn đang/đang làm với tên lớp.

0

Đề xuất Sử dụng dữ liệu-attriubtes. Bạn không cần jquery.validate.unobtrusive.js nữa. Kể từ phiên bản 1.11.0 jquery.validate.js đã được bao gồm theo mặc định. Cú pháp được giữ nguyên, hãy xem các mẫu tại đây: http://denverdeveloper.wordpress.com/2012/09/26/some-things-ive-learned-about-jquery-unobtrusive-validation/

+0

Bạn có thể cập nhật liên kết này không? – peater

+1

Chắc chắn: https://spabuilder.wordpress.com/2012/09/26/some-things-ive-learned-about-jquery-unobtrusive-validation/ Đồng thời sửa lỗi chính tả rõ ràng trong nhận xét ở trên (bạn không cần phần .unobtrusive nữa) – ValGe

Các vấn đề liên quan