jQuery validate eklentisini kullanıyorum. Sınıfı .percent kullanarak tüm girdi alanlarının toplamını hesaplamaya çalışıyorum. .percent alanların toplamı% 100'e eşit değilse, atma onayı hatası.jQuery dinamik yüzde alanını doğrula
Yüzde satırları dinamik bir kılavuzun bir parçasıdır ve çok sayıda olabilir. Aşağıda üzerinde çalıştığım şeyin bir örneğini göreceksiniz. AddMethod'un, her bir input.percent için tek bir zaman yerine çağrıldığını buluyorum. Senden çağrılmadan önce çağrıldığını söylemek isterim. Kod,
.
html
<div class="row">
<input value="" class="percent"/>
</div>
<div class="row">
<input value="" class="percent"/>
</div>
js
kurallar halinde sınıfı geçerken ben küçük bir başarı ile aşağıdaki kodu denedim
$.validator.addClassRules({
percent: {percent:true}
});
$.validator.addMethod("percent",
function cals(value, element) {
// all the fields that start with 'coeff'
var percent = element;
var total = 0;
for (var i = 0; i < percent.length; i++) {
total += Number(percent[i].value);
}
return total == 100;
}, $.format("Percentage fields most total up to 100%"));
$("form").validate({
});
Güncellemeler
$("#modify-funding .percent").rules('add', {sum: 100});
$.validator.addMethod("sum", function (value, element, params) {
var sumOfVals = 0;
$("#modify-funding .percent").each(function() {
sumOfVals = sumOfVals + parseInt($(this).val().length ? $(this).val() : 0);
});
if (sumOfVals == params) return true;
return false;
},
$.format("Percentage fields most total up to 100%")
);
teklif sadece pas Ek yüzde alanlarını sorgulamamı sağlayan tek bir öğede şarkı söyle. Diğer bir konu, hata sınıfını yalnızca ilk yüzde öğeye ekler ve% 100 ölçüt karşılandıktan sonra ek öğeler hatayı bırakmaz.
Güncelleme 2
Bu benim yüzde doğrulama işe yaraması için geldim en yakın olanı. Çok etkili bir kod değildir, çünkü kuralların her döngüsünde yüzdelik alanların arasında geçiş yapmanız gerekir. Kod hala yüzde Böyle basit doğrulama için jquery kullanmayın eşit 100'e
$("#modify-funding .percent").each(function() {
$(this).rules('add', {sum: [".percent"]});
})
$.validator.addMethod("sum", function (value, element, params) {
var sumOfVals = 0;
$(params[0]).each(function() {
sumOfVals += parseFloat($(this).val().length ? $(this).val() : 0);
});
if (sumOfVals == 100) return true;
return false;
},
$.format("Percentage fields most total up to 100%")
);
'percent' için bir sınıf kuralı eklediniz. Bu, 'percent' sınıfına sahip her girdinin doğrulama kuralınızı çalıştırması anlamına gelir. Nasıl çalışmasını istersin? –
gönderildiğinde, tüm alanların toplamını .percent ile ve% 100'lük atma onayı hatasıyla eşit değilse belirtmek isterim. –
'.rules()' yöntemini kullanırken, onu bir '.each()' şeklinde sarmanız gerekir, aksi halde, gördüğünüz gibi, eşleşen sınıfla yalnızca ilk öğeye uygulanır. – Sparky