문제

테이블의 다른 모든 체크 박스를 확인하려면 확인란을 사용하고 있습니다.
체크 박스가 테이블 안에 체크인 한 후에는 동일한 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(".",","));
}
.

jsfiddle

다른 팁

click 이벤트 대신 모든 확인 CheCbox에 대해 change 이벤트를 사용하십시오.변경시 새 값으로 변경 한 후에 화면이며 this.checked가 올바른 값을 제공합니다.

$('#allcheck').change(function() {
    var checkedStatus = this.checked;
    $('table tbody').find('input[type="checkbox"]').each(function () {
        $(this).prop('checked', checkedStatus);
    });
});
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top