У меня есть некоторые входы на веб-форму. Я вычисляю здесь все. Когда я вычисляю вещи (используя JS), я каждый раз использую функцию .toFixed (2).
В IE и Chrome номера всегда отображаются с двумя знаками после запятой. Это то, что я хочу. В десятичных точках Firefox происходит спрятаться.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
Решение:
Решение найдено и протестировано с помощью возможного дубликата e и отмеченный ответ.
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;
}
Я нашел это Q, но я не думал, что это мне поможет. Пытай, что не читал точно. Я думаю, это могло бы помочь мне, но это означало бы, что мне нужно объявить слушателя событий для каждого входа? Я получил около 15 из них, и пользователь может добавить больше к форме ... – Yaerox
Поскольку вы используете это поле только для целей вывода/отображения, и пользователь не может напрямую манипулировать значением (по крайней мере, на вашей скрипке) - зачем использовать поле 'number' вообще здесь? Простое поле 'text', и проблема ушла - нет? (Это даже оправдывает использование элемента формы _at all_ может быть другим вопросом.) – CBroe
В реале у меня есть форму для создания счета. Это означает, что пользователь может вводить данные в мои поля ввода и вычислять суммы и другие вещи. Вот почему я использую поле чисел. – Yaerox