2010-08-15 17 views
9

"Gönderim adresiniz, gönderim adresinizle aynı mı?" Alanına sahip bir form var. Kullanıcı "Hayır" radyo düğmesini tıklatırsa gizli ul # billingAddress gösterilir. Görünür olması durumunda ul # billingAddress'te bulunan alanlar gereklidir, yani, eğer display: block ise.jQuery validate plug - gizli öğeler yalnızca görünür olduğunda doğrulanıyor

JQuery validate.js için, yalnızca alan görünürse bunları gerektiren özel bir addMethod nasıl yazarım? Benim sahip olduğum şey bu değil.

$.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"); 

Bu, açıkça krikolanmıştır. Var olan her biri için çalışmalıyım.

Teşekkürler!

+0

Onları sadece görünmez yapmak değil, aynı zamanda devre dışı bırakmayı da denediniz mi? Bu sadece bir tahmindir, ancak devre dışı bırakılmış form alanları zaten iletilmeyeceği için, onlarda hiçbir doğrulama gerçekleşmeyeceğini umuyorum. – Tomalak

+0

Onları devre dışı bırakmak zorunda olmamalıyım, sadece görünür olduklarında yalnızca doğrulamalarını istiyorum. Onları devre dışı bırakmak daha kolay değil mi? –

+0

Onları hem görünmez * hem de * devre dışı bırakmayı kastediyorum. JQuery ile, bu yeterince kolaydır. – Tomalak

cevap

19

Görünür çekle ilgili sorun şu bölümdür: .is('visible') olması gereken: kullanmak .is(':visible').


alternatif olarak, böyle, biraz daha kolay istediğini yapmak ignore option kullanabilirsiniz:

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

Bu yaklaşım isterseniz kuralları gerekli standardı kullanmanızı sağlar.

+0

Müthiş her zamanki gibi Nick'e göre görünür kılmayı tercih ederim. Thx adam! –

İlgili konular