لا يتم إطلاق حدث Checkbox .change()، عند "إطلاقه" بواسطة مربع اختيار آخر
-
21-12-2019 - |
سؤال
أنا أستخدم مربع اختيار للتحقق من جميع مربعات الاختيار الأخرى في الجدول.
بعد تحديد مربع الاختيار داخل الجدول (عند التغيير)، أقوم بتلخيص كل قيمة مربع نص في نفس tr.
إنه يعمل بشكل جيد على Firefox وChrome.
في IE11 والإصدارات الأقدم (من المهم بالنسبة لي أن يعمل في كل متصفح) التغيير الأول في مربع الاختيار "الكل" ما عليك سوى تحديد المربعات الأخرى، ولكنه لا يلخص قيم مربع النص.
في النقرة الثانية، يقوم بالتلخيص ولكن قم بإلغاء تحديد مربعات الاختيار.
لذلك فهو يعمل بطريقة خاطئة لأنه يتم تجاهل "التغيير" الأول أو شيء من هذا القبيل.
آسف لغتي الإنجليزية السيئة والوصف السيئ.
<thead>
<tr>
<th>Auswahl <input type="checkbox" id="allcheck" /></th>
<th>Kunden-Nr.</th>
<th>Personal-Nr.</th>
<th>Vorname</th>
<th>Name</th>
<th>Gutscheintyp</th>
<th>Betrag €</th>
</tr>
</thead>
<tbody>
<tr>
<td align="center"><input type="checkbox" name="check" /></td>
<td align="left">1</td>
<td align="left">2</td>
<td align="left">3</td>
<td align="left">4</td>
<td align="left" class="typ">5</td>
<td align="center" class="texttd">
<input type="text" class="txt" maxlength="5" onclick="this.select()" value="20.00" /></td>
</tr>
</tbody>
<tfoot>
<tr>
<th colspan="5"></th>
<th colspan="1"">Summe</th>
<th colspan="1" id="sum">0,00</th>
</tr>
</tfoot>
allcheck هو معرف خانة الاختيار، والتحقق من جميع الآخرين.:)
// TICK ALL CHECKBOXES
$('#allcheck').click (function () {
var checkedStatus = this.checked;
$('table tbody').find('input[type="checkbox"]').each(function () {
$(this).prop('checked', checkedStatus);
});
});
// SUM UP TEXTBOXES IF CHECKBOX CHECKED
$('input[type="checkbox"]').change(function() {
var sum = 0.00;
$("table tr td input:checked").each(function(){
test = $(this).closest('tr').find('input[type="text"]').val();
test = test.replace( ",",".");
if (isNaN(test)) {
sum = 0.00;
}
sum += parseFloat(test, 10);
$("#sum").html(sum.toString().replace(".",","));
});
sum = parseFloat(sum, 10);
sum = sum.toFixed(2);
$("#sum").html(sum.toString().replace(".",","));
});
آمل أن تكون هذه المعلومات كافية بالنسبة لك لمساعدتي قليلا.:)
المحلول
أن تغيير خاصية "فحص" لا يبدأ دائما حدث "تغيير".
حتى يجب عليك نقل حساب المبلغ الخاص بك إلى وظيفة منفصلة واتصل به صراحة في معالج النقر "#allcheck"
(قم أيضا بتنظيف الكود الخاص بك قليلا)
giveacodicetagpre.
نصائح أخرى
بدلاً من click
استخدام الحدث change
حدث للجميع حدد خانة الاختيار.عند التغيير سيتم إطلاقه بعد التغيير إلى القيمة الجديدة و this.checked
سوف أعطيك القيمة الصحيحة:
$('#allcheck').change(function() {
var checkedStatus = this.checked;
$('table tbody').find('input[type="checkbox"]').each(function () {
$(this).prop('checked', checkedStatus);
});
});