Firefox - 输入类型编号隐藏小数位

时间:2015-08-13 09:51:16

标签: javascript html firefox

我在网络表单上得到了一些输入。我在这里计算东西。当我计算东西时(使用JS)我每次都使用.toFixed(2)函数 在IE和Chrome中,数字始终显示为2位小数。这就是我想要的。 在Firefox小数位上会隐藏。

这是我控制的一些例子:<input type="number" value="19.00" name="tax" id="tax" min="0" step="0.01" class="input_number" tabindex="3">

输出:
     - IE:19.00
     - FF:19
     - Chrome:19.00

解决方案:

在可能的重复和标记答案的帮助下找到并测试了解决方案。

http://jsfiddle.net/duuy884a/7/

<input type="text" min="0" step="0.01" name="test" id="test" value="" pattern="[0-9]+([,\.][0-9]+)?" />
<input type="text" min="0" step="0.01" name="test2" id="test2" value="" readonly />
<button onclick="set()">check</button> 

function isNumber(n) {
    return !isNaN(parseFloat(n)) && isFinite(n);
}

function set (  ){
    if ( document.getElementById("test").value.length <= 0 ){ return; }

    document.getElementById("test").value = document.getElementById("test").value.replace(/,/g, '.');
    var fInput = parseFloat( document.getElementById("test").value );
    if ( isNumber( fInput ) == true ){
        document.getElementById("test2").value = checkZeros( document.getElementById("test") );
    }
}

function checkZeros ( oInput ){
    if ( oInput.value === '') {
        return;
    }

    oInput.value = parseFloat(  oInput.value ).toFixed(2);    
    oInput.value =  oInput.value.toString();

    if ( oInput.value.indexOf('.') === -1) {
         oInput.value =  oInput.value + '.00';
    }
    while ( oInput.value.indexOf('.') >  oInput.value.length - 3) {
         oInput.value =  oInput.value + '0';
    }

    return oInput.value;
}

2 个答案:

答案 0 :(得分:1)

解决方案基于答案评论部分OP提供的小提琴。

test2输入类型更改为text。它会以你想要的方式工作。

&#13;
&#13;
<input type="text" name="test2" id="test2" value="" readonly />
&#13;
&#13;
&#13;

答案 1 :(得分:-1)

Firefox将您的值视为字符串而不是数字,尝试将值设置为19(不带引号),然后使用toFixed(2)将值设置为19.00以计算内容。