2010-08-15 25 views
9

Tôi có một biểu mẫu có trường "Địa chỉ thanh toán của bạn giống với địa chỉ giao hàng của bạn". Nếu người dùng nhấp vào nút radio "Không", ul # billingAddress ẩn được hiển thị. Các trường chứa trong ul # billingAddress được yêu cầu nếu nó hiển thị, đó là nếu ul có display: block.jQuery xác nhận tính hợp lệ của các yếu tố ẩn chỉ khi hiển thị

Làm cách nào để viết một addMethod tùy chỉnh cho jquery validate.js chỉ yêu cầu những người đó nếu trường hiển thị? Đây là những gì tôi có mà không làm việc.

$.validator.addMethod ("BillingSameAsShipping", function(value, element) { 
    var billingFields = ['billingAddress1','billingAddress2','billingCity','billingState','bilingZip'] 
    if ($("#billingAddress").is('visible') && billingFields.val('') { 
     return false; 
    } else 
     return true; 
}, "Please fill in the required billing information"); 

Điều này, rõ ràng là được cắm. Tôi cần phải làm cho nó làm việc cho mỗi một trong đó là trong var.

Cảm ơn!

+0

Bạn đã cố gắng làm cho chúng không chỉ vô hình, mà còn thiết lập chúng để vô hiệu hóa? Nó chỉ là một đoán, nhưng kể từ khi các lĩnh vực hình thức vô hiệu hóa sẽ không được truyền anyway, tôi hy vọng rằng không có xác nhận xảy ra trên chúng. – Tomalak

+0

Tôi không cần phải làm cho chúng bị vô hiệu hóa, tôi chỉ muốn chúng chỉ xác thực khi hiển thị. Trừ khi làm cho chúng bị vô hiệu hóa là dễ dàng hơn? –

+0

Tôi có nghĩa là làm cho chúng cả vô hình * và * vô hiệu hóa. Với jQuery, điều này là dễ dàng đủ. – Tomalak

Trả lời

19

Sự cố với kiểm tra hiển thị là phần này: .is('visible') cần phải là: .is(':visible') để sử dụng :visible selector.


Là một thay thế, bạn có thể sử dụng ignore option để làm những gì bạn muốn dễ dàng hơn một chút, như thế này:

$("#myForm").validate({ 
    //other options 
    ignore: ':hidden' 
}); 

Cách tiếp cận này cho phép bạn sử dụng các tiêu chuẩn quy tắc cần thiết nếu bạn muốn.

+0

Tuyệt vời như luôn luôn Nick. Thx người đàn ông! –

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