jQuery Validate Eklentisi - Tek alanın doğrulanmasını tetikler


90

İsteğe bağlı olarak facebook connect ile önceden doldurulabilen bir formum var. Bir kullanıcı bağlandığında, adı ve e-postası otomatik olarak doldurulur. Sorun, bunun, e-postanın zaten var olup olmadığını kontrol etmek için uzaktan doğrulamayı tetiklememesidir.

O sahada onaylamayı tek başıma çağırmamın bir yolu var mı? Gibi bir şey:

$('#email-field-only').validate()

fikir olurdu. Şanssız dokümanlar arasında arandı.

Yanıtlar:


148

Bu yöntem istediğinizi yapıyor gibi görünüyor:

$('#email-field-only').valid();

4
Not: form öğesi adı da bu işlevle $('input[name=email-field-only]').valid();çalışır , yani aynı zamanda çalışır
Raptor

1
sorun nedir? bu yöntemi kullandığımda doğrulamam bozuluyor
nakajuice

2
Bu çözüm, tüm alanlar için hata mesajlarını göstererek tüm formu doğrular.
Pablo,

@haemhweg, belki .valid () ' yi kullanmaya çalışmadan önce .validate () yöntemini çağırmadınız ? Dokümanlar: jqueryvalidation.org/valid
userfuser,

1
API değişti, Paul
Anima-t3d

24

Kullanım Validator.element():

Tek bir öğeyi doğrular, geçerliyse true, aksi takdirde false döndürür.

API'de gösterilen örnek şu şekildedir:

var validator = $( "#myform" ).validate();
validator.element( "#myselect" );

.valid()diğerlerinin de belirttiği gibi tüm formu doğrular. API şunu söylüyor:

Seçilen formun geçerli olup olmadığını veya seçilen tüm öğelerin geçerli olup olmadığını kontrol eder.


20

Bazı nedenlerden dolayı, diğer yöntemlerden bazıları alan odaklanılana / karartılana / değiştirilene veya bir gönderim yapılmadan çalışmaz ... bu benim için çalışıyor.

$("#formid").data('validator').element('#element').valid();

Bulmak için jquery.validate betiğini incelemeliydim ...


1
Bu benim için işe yarayan şeydi, ben de .valid()sonunda ekledim , bu yüzden beni aradı $("#Form").data('validator').element('input[name=__Suburb]').valid(); , ID ile seçmezseniz bunun gerekli olabileceğine inanıyorum.
Mihai P.

2
.valid()İfadenin sonuna ait olduğunu sanmıyorum . .element()(Fonksiyon bir boolean sonuç döndürür dokümanlar | src ). .Valid () 'yi aramaya çalıştığımda şu hata mesajını alıyorum: "Yakalanmamış TypeError: $(...).data(...).element(...).validbir işlev değil"
KyleMit

Doğrulayıcıyı forma eklediniz mi? JQuery doğrulamasını kullanalı birkaç yıl oldu ... Yani bunun için API değişmiş olabilir. O zamanlar, yukarıdakileri bulmak için dahili çalışanlar aracılığıyla çalışmak zorunda kaldım. Dokümantasyonda yayınlanmadı, bu yüzden son baktığımdan beri yapı çok iyi değişmiş olabilir.
Tracker1

16
$("#FormId").validate().element('#FieldId');

2
Bu yöntemi tercih ediyorum, güzel bir 1 astar. Harika çalışıyor, teşekkürler.
Andy

1
Bu, geçerli dönüş türüne sahip herhangi bir hatasız mükemmel cevap
Kaushik Thanki

7

Doğrulamanızı kurduğunuzda, doğrulayıcı nesnesini kaydetmeniz gerekir. bunu ayrı alanları doğrulamak için kullanabilirsiniz.

<script type="text/javascript">
var _validator;
$(function () {    
     _validator = $("#form").validate();   
});

function doSomething() {    
     _validator.element($('#someElement'));
}
</script> 

- bu benzer soruyla çapraz gönderildi


7

Tek tek form alanını doğrulamak istiyorsanız, ancak kullanıcı arayüzünün tetiklenmesini ve herhangi bir doğrulama hatasını görüntülemesini istemiyorsanız, verilen alan doğrulamayı geçerse veya geçemezse dönen Validator.check () yöntemini kullanmayı düşünebilirsiniz.

İşte örnek

var validator = $("#form").data('validator');
if(validator.check('#element')){
    /*field is valid*/
}else{
    /*field is not valid (but no errors will be displayed)*/
}

0

formunuzdaki "bazı öğeler" (tüm öğeler değil) için doğrulama yapmak istemeniz durumunda, bu yöntemi kullanabilirsiniz:

$('input[name="element-one"], input[name="element-two"], input[name="element-three"]').valid();

Umarım herkese yardımcı olur :)

DÜZENLENDİ


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.