2016-04-14 6 views
1

Arandığında, SELECT dizileri VEYA Require_From_Group ile ilgilenen benzer sorular buldum, ancak hiçbir ikisini de kullanmıyordum ve ikisi de birlikte çalışıyor gibi görünmüyor .Bir SELECT dizisini doğrulamak için jQuery.Validation kullanılamıyor VEYA bir grup içinde

Kod, böylelikle (şu anda) aşağıdaki gibidir: Çeşitli kombinasyonlar çalıştılar

checkForm: function() { 
    this.prepareForm(); 
    for (var i = 0, elements = (this.currentElements = this.elements()); elements[i]; i++) { 
     if (this.findByName(elements[i].name).length != undefined && this.findByName(elements[i].name).length > 1) { 
      for (var cnt = 0; cnt < this.findByName(elements[i].name).length; cnt++) { 
       this.check(this.findByName(elements[i].name)[cnt]); 
      } 
     } else { 
      this.check(elements[i]); 
     } 
    } 
    return this.valid(); 
} 

:

<form id="frmMeeting" ...> 
    <select name="internal_attendees[]" id="internal_attendees" size="6" class="attendees attendee-group" multiple="multiple"></select> 
    <select name="external_attendees[]" id="external_attendees" size="6" class="attendees attendee-group" multiple="multiple"></select> 
</form> 

<script src="assets/scripts/jquery.validate.js" type="text/javascript"></script> 
<script src="assets/scripts/additional-methods.js" type="text/javascript"></script> 

var validator = $("#frmMeeting").validate({ 
    errorElement: "span", 
    rules: { 
     'internal_attendees[]': { 
      require_from_group: [1, ".attendee-group"] 
     }, 
     'external_attendees[]': { 
      require_from_group: [1, ".attendee-group"] 
     } 
    } 
}); 

I dizilerin doğrulama sağlamak için başka bir soru göre jQuery.validate.js değişti ve grubu doğrulamak için yanıtlar, ancak sorunun, bir INPUT dizisi yerine SELECT dizisi olup olmadığı konusunda soru sorması.

Doğru "Şu anda bu alanlardan en az birini doldurun." iki alana karşı mesaj AMA Verileri (her iki SELECT'in verileri olsa bile) iletmek için bunları göremiyorum.

Herhangi bir öneriniz var mı?

isValid = $fields.filter(function() { 
     return validator.elementValue(this); 
     }).length >= options[ 0 ]; 

boş bir dizi gerçek örneğin döner öğeleri bir değere sahip ise

cevap

1

Burada sorun, bu require_from_group sadece kontroller Boolean([]), dolayısıyla bir html <select multiple="multiple"> her zaman dolu olarak kabul edilir. Bu nedenle, tüm require_from_group doğrular.

Bunu düzeltmek için, built_id_from_group yerleşik olarak bu düzeltilmiş sürümle değiştirdim: https://gist.github.com/RegisFrey/d260c1c150ab398b6231790b23a6fffc

İlgili konular