2012-04-11 20 views
40

Varsayılan olarak true olan focusInvalid seçeneği vardır. Ancak yalnızca form gönderimi gerçekleştiğinde çalışır. Formu, yöntemiyle doğrularsam, o zaman işe yaramıyor. Yani soru valid kullanıldığında geçersiz alan nasıl odaklanır?Geçersiz alanlar jQuery validate ile nasıl odaklanır?

farkı görmek this demo bakınız. Sadece düğmelerine basın.

Eğer tıklatma işleyicisi kullanabilirsiniz böylece bir değişkene sizin doğrulayıcı kaydetmeniz gerekir her şeyden
+1

@Evan, jsbin'i sevmediniz mi? Bunu da değiştirebilirsiniz - http://jsbin.com/ayupob/edit#javascript ,html –

cevap

40

İlk:

var validator = $("#test-form").validate({ /* settings */ }); 

Sonra doğrulamak işleyicisinde, el validator değişkenden focusInvalid işlevini çağırabilirsiniz : ilk elem için invalidHandler ayarlayabileceğiniz odakladığınızda

$("#validate").click(function() { 
     if ($("#test-form").valid()) 
       alert("Valid!"); 
     else 
       validator.focusInvalid(); 

     return false; 
    }); 

Example

49

ent başarısız olur:

$("#form").validate({ 
    onfocusout: false, 
    invalidHandler: function(form, validator) { 
     var errors = validator.numberOfInvalids(); 
     if (errors) {      
      validator.errorList[0].element.focus(); 
     } 
    } 
}); 
+3

jQuery validate, ilk geçersiz öğeyi ** veya son odaklanmış geçersiz öğeyi ** seçer. Kodunuz, bu sıkıntıdan kaçan ve her zaman birinciyi seçen tek buldum. Teşekkür ederim! –

+2

Evet, jquery.validates odak işlemeyi etkileyen bir snafus var. Kendi başına bir üst gibi çalışır, ancak duyarlı tasarımlar ve daha fazla jQuery komut dosyalarını eklemeye başladığınızda, odak biraz olsun. Güzel senaryo, yayınladığın için teşekkürler. Bu seçenek için –

+0

+1, hiçbir yerde bulamadık. BTW, küçük bir ipucu: aynı zamanda validator.lastActive = validator.errorList [0] .element; 'iki öğeye odaklanmaktan kaçınmak için .. bu, son aktif ve son başlangıç ​​tarihi olarak son tarih alanıyla karşılaştığım bir şeydi İlk geçersiz alan olarak, her iki alana da tarih seçenler attı (tabii ki ikisi de geçersiz). Alkış !! – Fr0zenFyr

İlgili konular