通过十进制值增加/减少输入

时间:2014-03-02 07:48:21

标签: javascript jquery

这是html:

<body>
    <p>
        <img src="http://i.imgur.com/yOadS1c.png" id="minus1" width="20" height="20" class="minus"/>
        <input id="qty1" type="text" value="1" class="qty"/>
        <img id="add1" src="http://i.imgur.com/98cvZnj.png" width="20" height="20" class="add"/>
    </p>

</body>

这是js:

$(function () {
    $('.add').on('click',function(){
        var $qty=$(this).closest('p').find('.qty');
        var currentVal = parseFloat($qty.val());
        if (!isNaN(currentVal)) {
            $qty.val(currentVal + 0.1);
        }
    });
    $('.minus').on('click',function(){
        var $qty=$(this).closest('p').find('.qty');
        var currentVal = parseFloat($qty.val());
        if (!isNaN(currentVal) && currentVal > 0) {
            $qty.val(currentVal - 0.1);
        }
    });
});

jsfiddle:http://jsfiddle.net/hMS6Y/30/

当我尝试将输入值增加或减少0.1时,我会得到一些奇怪的值,如:

1.1没关系 1.2000000000000002 1.3000000000000003

我怎样才能看出它们:1.1,1.2,1.3等等。

4 个答案:

答案 0 :(得分:3)

您可以使用 - .toFixed(1)将其四舍五入到您想要的小数位:

在这里:Fiddle

$(function () {
$('.add').on('click',function(){
    var qty = $(this).closest('p').find('.qty');
    var currentVal = parseFloat($(qty).val());
    if (!isNaN(currentVal)) {
        $(qty).val((currentVal + 0.1).toFixed(1));
    }
});
$('.minus').on('click',function(){
    var qty=$(this).closest('p').find('.qty');
    var currentVal = parseFloat($(qty).val());
    if (!isNaN(currentVal) && currentVal > 0) {
        $(qty).val((currentVal - 0.1).toFixed(1));
    }
});
});

答案 1 :(得分:2)

尝试使用像这样的

            $(function () {
        $('.add').on('click',function(){
            var $qty=$(this).closest('p').find('.qty');
            var currentVal = parseFloat($qty.val());
            if (!isNaN(currentVal)) {
                $qty.val(parseFloat(currentVal + 0.1).toFixed(1));
            }
        });
        $('.minus').on('click',function(){
            var $qty=$(this).closest('p').find('.qty');
            var currentVal = parseFloat($qty.val());
            if (!isNaN(currentVal) && currentVal > 0) {
                $qty.val(parseFloat(currentVal - 0.1).toFixed(1));
            }
        });
    });

答案 2 :(得分:1)

一个可接受的解决方法是将表达式转换为整数数学,然后转换回来,即

//添加案例

$qty.val((currentVal*10 + 1)/10);

//减去大小写

$qty.val((currentVal*10 - 1)/10);

答案 3 :(得分:0)

在Javascript中常见的是有意想不到的行为,但这个行为特别恶毒。

10000000000000000 === 10000000000000001

Javascript没有整数类型,但让你认为它有。 parseInt和parseFloat内置函数,“1”显示为“1”而非“1.0”(与许多语言一样)的事实导致一般误解。

Source

<小时/> 您可以使用 Javascript-bignum