2010-08-04 12 views
6

jQuery Doğrulama eklentisini istediğim gibi çalışmaya zor bir şekilde yaşıyorum. i kurallarını hiçbir jQ uzmanı :).valid() yalnızca jQuery Doğrulama eklentisi olan ilk girdiyi doğrular

Ne var birkaç gerekli girişleri olan bir formdur olduğumdan beri aşağıda gösteriyordu benimle çıplak edin:

$("#makeEvent").validate({ 
    onfocusout: false, 
    rules: { 
     name: { 
      required: true, 
      minLength: 2, 
      maxLength: 100 
     }, 
     host: { 
      required: true, 
      minLength: 2, 
      maxLength: 100 
     }, 
     startDate: { 
      required: true, 
      date: true 
     }, 
     endDate: { 
      required: true, 
      date: true 
     }, 
     desc: { 
      required: true, 
      minLength: 10, 
      maxLength: 255 
     }, 
     webpage: { 
      required: false, 
      url: true 
     }, 
     email: { 
      required: true, 
      email: true 
     }, 
    } 
}); 

Şimdi ben özel bir .click() aramanız var formu doğrulamak ve sonra formu göndermelerine izin vermeden önce kullanıcı için bir önizleme göstermek istiyorum. Aşağıdaki fonksiyon bakınız:

$('#submitPreview').click(function() { 
    if($("#makeEvent").valid() === false) { 
     //What to do if validation fails 
    } else if($("#makeEvent").valid() === true) { 
     //Show the preview and let the user either make changes or submit the final result 
    } 
}); 

Ama ne olur işlevi yalnızca ilk girişi (isim) doğrular olması ve hatta yanlış doğrular (kurallar 2 karakter az gerektirir, yine de sadece 1 karakterle doğrular Girilmez. Hiçbir karakter eklenmediyse yalnızca false döndürür).

Belki de benim yaklaşımım en iyisi değil, bu yüzden herhangi bir öneriye açığım. Dağınık kaynak koduna bir göz atmak isterseniz, burada eylem işlevini görebilirsiniz: http://event.gusthlm.se/make.php

Teşekkürler!

cevap

19

Gördüğünüz iki sorun, giriş alanlarınızda name özniteliğini kullanmadığınız ve name kimliklerinden biri olarak kullandığınız (formun gönderileceği IE için her tür keder oluşmasına neden oluyor).

Ben, ad girişine niteliklerini seçme ve textarea elemanları eklenir ve "theName" gibi bir şeye "adı" Değişen öneririm:

<label for="thename">Börjar</label> 
<input type="text" name="thename" id="thename"/> 
+0

ne bil Bu sorunu çözdü. Asla tahmin edemezdim ... Teşekkürler! –

+0

Bunun eski olduğunu biliyorum ama ad alanına sahip olamadığım bir sorunum var. Kredi kartlarını doğrulamak için Stripe kullanıyorum ve kredi kart bilgilerinin sunucumuza ulaşmasını engellemek için isim niteliğini hariç tutmamız gerekiyor. Ayrıca, ad özniteliğinin neden istemci tarafında doğrulamaya ilişkin herhangi bir etkisi olduğunu merak ediyorum. – computrius

+0

@computrius, jQuery Validate eklentisi bir 'name' özniteliği gerektirdiğinden, geliştiricinin eklentiyi girişleri takip etmesi gerektiğine karar vermiştir. – Sparky

İlgili konular