2015-08-13 2 views
0

У меня есть некоторые входы на веб-форму. Я вычисляю здесь все. Когда я вычисляю вещи (используя 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; 
} 
+0

Я нашел это Q, но я не думал, что это мне поможет. Пытай, что не читал точно. Я думаю, это могло бы помочь мне, но это означало бы, что мне нужно объявить слушателя событий для каждого входа? Я получил около 15 из них, и пользователь может добавить больше к форме ... – Yaerox

+0

Поскольку вы используете это поле только для целей вывода/отображения, и пользователь не может напрямую манипулировать значением (по крайней мере, на вашей скрипке) - зачем использовать поле 'number' вообще здесь? Простое поле 'text', и проблема ушла - нет? (Это даже оправдывает использование элемента формы _at all_ может быть другим вопросом.) – CBroe

+0

В реале у меня есть форму для создания счета. Это означает, что пользователь может вводить данные в мои поля ввода и вычислять суммы и другие вещи. Вот почему я использую поле чисел. – Yaerox

ответ

1

Решение, основанное на скрипке, данной ОП в разделе комментариев ответа.

Измените тип ввода test2 на text. И он будет работать так, как вы этого хотите.

<input type="text" name="test2" id="test2" value="" readonly />

+0

Я делаю это, но Outpot, показанный в моем Вопросе, остается тем же. – Yaerox

+0

Можете ли вы показать свой сценарий, пожалуйста? –

+0

http://jsfiddle.net/duuy884a/ делать это с помощью Firefox и, возможно, с помощью другого браузера. – Yaerox

0

Firefox видит ваше значение в виде строки, а не как число, попробуйте установить значение как 19 (без кавычек), а затем с помощью toFixed (2) следует установить значение 19.00 для расчета материала ,

Смежные вопросы