Şu anda bir foreach döngüsünün her yinelemesinde iki tablo çıktıyorum (C# traş makinesi görünümü, burada çok alakalı olmamasına rağmen). Bu iki tabloyu bir div içinde = jq-roundContainer
ile sardım ve her iki tablodaki her girdinin sınıfı jq-hitOrMiss
. Aşağıdaki gibi metin girişlerine girilen X sayısını özetlemeye çalışıyorum ama sum
değişkeni 0'dır (bunu bilmem gerektiğinde) ve inputs.length
da 0'dır.JQuery sorunu, metin girişlerini bulmak için en yakın olanını kullanıyor
html Aşağıya HTML ve basit jquery işlevi:
<div class="jq-roundContainer">
<table class="table table-bordered">
<thead>
<tr class="active">
<th colspan="2" class="text-center">1</th>
<th colspan="2" class="text-center">2</th>
</tr>
</thead>
<tbody>
<tr>
<td style="display:none">
@Html.Hidden("EventId", Request.Params["eventId"]);
@Html.Hidden("UserId", Request.Params["userId"]);
<input type="hidden" name="scoreCards[@i].UserProfile" value="@round.UserProfile" />
</td>
<td>
<input class="jq-hitOrMiss" onchange="SumHits();" name="scoreCards[@i].Hit1StationOneShotOne" pattern="[xXoO]" type="text" maxlength="1" size="1" value="@ScoreHitMisConverter.IsHitToTableRowValue(round.Hit1StationOneShotOne)" />
</td>
@{i++;}
</tr>
</tbody>
</table>
<table class="table table-bordered">
<thead>
<tr class="active">
<th colspan="2" class="text-center">14</th>
<th class="text-center">TOTAL</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<input class="jq-hitOrMiss" onchange="SumHits();" name="scoreCards[@i].Hit27StationThreeShotSeven" pattern="[xXoO]" type="text" maxlength="1" size="1" value="@ScoreHitMisConverter.IsHitToTableRowValue(round.Hit27StationThreeShotSeven)" />
</td>
<td class="text-center total jq-total">@round.Score</td>
@{i++;}
</tr>
</tbody>
</table>
</div>
ve jquery işlevi: Bu window
işaret edecek
function SumHits() {
var sum = 0;
var inputs = $(this).closest('.jq-roundContainer').find('.jq-hitOrMiss');
$.each(inputs, function (index, value) {
var value = $(value).val();
if (value == 'X' || value == 'x') {
sum++;
}
});
var totalInput = $(this).closest('.jq-roundContainer').find('.jq-total');
totalInput.text(sum);
}
deneyin tutmak istiyorsanız sizin html üzerinde değişiklik kaldırmak bunun değeri ve giriş elemanınıza atıfta bulunup bulunmadığını kontrol edin –
Referansı işleve, "onchange =" SumHits (this); "olarak iletmeniz gerekir. Sadece bir not: jQuery'yi daha iyi kullanmanız gerekir, örneğin onchange fonksiyonlarını tanımlamaya gerek yoktur. – skobaljic