2012-05-10 30 views
5

İstemci için sihirbaz tabanlı bir sipariş verme sistemi olan sayfa için yeni bir düzen üzerinde çalışıyorum. Materyal setlerini sipariş ederler ancak bu materyaller, sipariş işlemi sırasında, kırmızı, mavi ve/veya yeşilin herhangi bir kombinasyonunda 10 widget sipariş edebilecekleri şekilde birlikte gruplanabilirler. Alanların toplamı, önceden hesaplanan maksimum değeri aşamaz. Malzemelerin çoğu grup başına basit bir tek seçenektir.jQuery Tüm alanları değerlendirmiyor Valid

jQuery validate'yi diğer sayfalarda kullandım ve sayfadaki tüm giriş öğelerini doğrulamak için addClassRules yöntemini kullandım ve çok iyi çalıştı. Şu an üzerinde çalıştığım örnek beni şaşırtmaktadır çünkü form tesliminde yalnızca ilk doğrulama hatasını yakalar, ancak gönderdikten sonra genellikle başkalarını yakalar, ancak hiçbir zaman doğrulama hatalarının tam listesi değildir. http://jsfiddle.net/brianmat/2nV5u/

sorunsuz bir kaç sitelerinde çalıştı bir hata sayım pasajı kullanın: Eğer ben birlikte koyuyorum görebilecek

İşte benim jsfiddle örnek. Bu örnekte, tüm 7 metin kutusu boş bırakılmış olsa bile sadece 1 hata alıyorum.

Buradaki en büyük farkım, eşyalarımı gruplandırmak için bir rowspan yapıyorum ama bunun nerede sorun olacağını göremiyorum. Bunun son derece basit bir şey olduğunu öğreneceğim, ama bu noktada sadece bir duvara çarpıyorum.

$.validator.addClassRules({ 
    NumericInput: { 
     required: true 
    } 
}); 

$("#theForm").validate({ 
    invalidHandler: function(e, validator) { 
     var errors = validator.numberOfInvalids(); 
     if (errors) { 
      var message = errors == 1 ? 'You missed 1 field. It has been highlighted below' : 'You missed ' + errors + ' fields. They have been highlighted below'; 
      $("div.error span").html(message); 
      $("div.error").show(); 
     } else { 
      $("div.error").hide(); 
     } 
    }, 
    errorPlacement: function(error, element) {}, 
    submitHandler: function(form) { 
     $("div.error").hide(); 
     form.submit(); 
    } 
}); 

kalan kod basitçe alt toplamını ve sayısal sadece veri girişi işler: jQuery kodu doğrulamak

fantezi bir şey değildir.

Bu sorunu ele almak için tamamen farklı bir yaklaşıma tamamen açığım. Bu nedenle mevcut kodumu kaldırıyorum ve düzgün çalışacak bir şey bulmak sorun değil. Sonunda yaptığım şey buysa, kare bir pegi yuvarlak bir deliğe sığdırmaya çalışmamayı tercih ederim.

cevap

12

sinir bozucu name nitelik unutmayın:

<input id="Text1" name="Text1" type="text" class="NumericInput group1" materialgroup="1" /> 
<!--    ^^ --> 

Güncelleme örnek: Ayrıcahttp://jsfiddle.net/2nV5u/6/

, data-* (elemanlarına kendi özelliklerini eklemek yerine niteliklerini kullanmayı düşünün yani data-materialgroup yerine materialgroup arasında).

+2

Şimdi aptal gibi hissediyorum. Bunu düzeltmiş gibi görünüyor ve bu gizlice şüphe duyuyordum, basit bir şey olacaktı. Teşekkürler bir ton! – BrianM

+0

Ayrıca, data - * elemanlarına özellik elemanlarına baktım ama attr() yöntemini çağırırken oluşmayan bazı veri biçimlendirme sorunları buldum. İlginç bir notu okuduktan sonra o rotaya gittim http://lookfirst.com/2011/12/dont-use-jquery-data-method-use-attr.html – BrianM

+0

@BrianM: Bu yazının yazarı doğru ama Verileri almak için '.attr (" data - * ")' yı kullanırsanız, biçimlendirme sorunları * yapamazsınız. –

İlgili konular