확인란의 확인란의 .Change () 이벤트가 화재가 아니며 다른 확인란을 통해 "해고"
-
21-12-2019 - |
문제
테이블의 다른 모든 체크 박스를 확인하려면 확인란을 사용하고 있습니다.
체크 박스가 테이블 안에 체크인 한 후에는 동일한 TR의 모든 텍스트 상자 값을 요약합니다.
Firefox와 Chrome에서 잘 작동합니다.
IE11 및 아래 (모든 브라우저에서 작동하는 것이 중요합니다) "ALL"확인란의 첫 번째 변경은 다른 것들을 틱하지만 텍스트 상자 값을 요약하지는 않습니다.
두 번째 클릭에서 그는 요약하지만 확인란을 undick합니다.
그래서 첫 번째 "변화"가 무시되거나 sth이기 때문에 잘못 작동합니다.
나쁜 영어와 나쁜 설명을 죄송합니다.
<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는 다른 모든 것을 확인하고 확인란의 ID입니다.:)
// 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(".",","));
});
.
나는이 정보가 당신이 조금 돕기 위해 충분하기를 바랍니다.:)
해결책
"Checked"속성을 변경하는 것이 항상 "변경"이벤트를 항상 트리거하지 않는 것 같습니다.
SUM 계산을 별도의 함수로 이동하고 "#allcheck"에서 명시 적으로 호출해야합니다 핸들러
(또한 코드를 약간 청소)
// TICK ALL CHECKBOXES
$('#allcheck').click (function () {
var checkedStatus = this.checked;
$('table tbody').find('input[type="checkbox"]').each(function () {
$(this).prop('checked', checkedStatus);
});
updateSum();
});
// SUM UP TEXTBOXES IF CHECKBOX CHECKED
$('tbody input[type="checkbox"]').change(updateSum);
function updateSum() {
var sum = 0.00;
$("tbody input:checked").each(function(){
var test = $(this).closest('tr').find('input[type="text"]').val();
var testNum = parseFloat(test.replace( ",", "."));
if (!isNaN(testNum)) {
sum += testNum;
}
});
$("#sum").text(sum.toFixed(2).replace(".",","));
}
.
다른 팁
click
이벤트 대신 모든 확인 CheCbox에 대해 change
이벤트를 사용하십시오.변경시 새 값으로 변경 한 후에 화면이며 this.checked
가 올바른 값을 제공합니다.
$('#allcheck').change(function() {
var checkedStatus = this.checked;
$('table tbody').find('input[type="checkbox"]').each(function () {
$(this).prop('checked', checkedStatus);
});
});
. 제휴하지 않습니다 StackOverflow