3

小数点以下を2桁に制限するために次を取得する方法を知っている人はいますか? また、2 つのフィールドに値がない場合に NaN が表示されるという問題もあります (何も表示しないほうがよいでしょう)。誰でもこれらの問題を解決できますか?

HTML

<td class="grade">
    <input type="text" value="28" class="numerator" /> / <input type="text" value="30" class="denominator" />
    <div class="result"></div>
</td>

jQuery

function update($ele) {
    var n = Number($ele.find('.numerator')[0].value);
    var d = Number($ele.find('.denominator')[0].value);
    $ele.find('.result').text(n / d * 100);
}

$('.grade').each(function() {
    update($(this));
});

$('.grade input').on('keyup', function() {
    update($(this).closest('.grade'));
});
4

1 に答える 1

3

フィドル

function update($ele) {
    var n = Number($ele.find('.numerator')[0].value);
    var d = Number($ele.find('.denominator')[0].value);
    /* this works but is slightly more verbose (and maybe a bit slower) */
    var val = (n / d * 100);
    $ele.find('.result').text(( isNaN(val) || ! isFinite(val) ) ? '' : val.toFixed(2));
    /* This might be faster, and also make everything a bit more succinct * /
    var val = d !== 0 ? n / d * 100 : NaN;
    $ele.find('.result').text(isNaN(val) ? '' : val.toFixed(2));
    /* */
}
于 2013-08-09T05:13:52.543 に答える