我在网络表单上得到了一些输入。我在这里计算东西。当我计算东西时(使用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;
}
答案 0 :(得分:1)
解决方案基于答案评论部分OP提供的小提琴。
将test2
输入类型更改为text
。它会以你想要的方式工作。
<input type="text" name="test2" id="test2" value="" readonly />
&#13;
答案 1 :(得分:-1)
Firefox将您的值视为字符串而不是数字,尝试将值设置为19(不带引号),然后使用toFixed(2)将值设置为19.00以计算内容。