2015-06-18 5 views
1

Это моя проблема. Когда я пытаюсь установить значение поля ввода в FireFox, ничего не происходит. У меня нет ошибок. Это просто не работает. Предполагается, что после номера будет добавлено два десятичных знака. Он отлично работает в Chrome. Вот мой JQuery код ...

$('input.drawer').on('blur', function() { 
 
    var number = parseFloat($(this).val()); 
 
    var n = number.toFixed(2); 
 
    $(this).val(n); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input tabindex="1" class="drawer f-right m-left w50 right-text" type="number" placeholder="$0.00" />

Я попытался с помощью $(this).attr('value' n);, но это не работает.

+0

'$ (this) .attr ('value', n)', вам не хватает запятой. Все, что я могу придумать, это то, что метод '.toFixed()' возвращает строку, а тип ввода - номер, он может ожидать число. –

+0

Или попробуйте личное окно. – lshettyl

+1

FF не будет отображать конечные нули ('document.getElementById ('xxx'). Value =" 42.10 "') будет показывать '42.1', и он будет обрезать пустые дроби (' .00') - то, что у вас есть, преобразует '42.125 'to' 42.13' (но его считают недопустимым, добавьте 'step = 'any'') –

ответ

0

Я нашел работу, которая, похоже, работает в Firefox. Я меняю тип ввода на число в фокусе, давая мне правильную клавиатуру на мобильном телефоне, но затем меняю тип на текст на размытие, давая мне два десятичных знака. См. Код ниже ...

$('input.drawer').on('blur', function(){ 
    var number = parseFloat($(this).val()); 
    var n = number.toFixed(2); 
    $(this).attr('type','text'); 
    $(this).val(n); 
}); 

$('input.drawer').on('focus', function(){ 
    $(this).attr('type','number'); 
}); 
1

Это связано с тем, как firefox обрабатывает тип ввода номера. https://bugzilla.mozilla.org/show_bug.cgi?id=1003896

Вы можете попробовать текст, если это приемлемый тип ввода для вас.

Найдя выше цитата все ниже только интересно, но не полезно

Например, в Firefox против Chrome проверить http://jsbin.com/coyuyipeca/edit?html,js,output

Вы увидите значение действительно правильно отформатирован в боевой готовности в FF, но теряется при нажатии на числовое поле. Измените ввод на

<input tabindex="1" class="drawer f-right m-left w50 right-text" type="text" placeholder="$0.00" /> 

и вы увидите, как это работает. Конечно, вы потеряете преимущества полевого номера (особенно мобильных входов), поэтому это зависит от того, насколько важна эта функциональность для вас.

Примечание: Одна странная вещь, я отмечаю, если вы установите вход в

<input tabindex="1" class="drawer f-right m-left w50 right-text" type="number" step=".01" placeholder="$0.00" /> 

Вы можете использовать кнопку приращения и получить десятичные, только кажется, будут потеряны, когда JQuery устанавливает значение. Не уверен, что это проблема с jQuery или с FF

+0

Извините, я надеюсь, что теперь ясно. –

+0

* «Не знаете, что происходит, комментарии?» * Вы прочитали мой ответ? –

+0

я уверен. Я говорю, что вы можете прямо установить $ (this) .val (22.53); и получите значение. Вы объяснили это? Извините, если я пропустил это. –

3

Итак, он «работает», но Firefox просто форматирует число по-разному, он обрезает 0. Если вы

$(this).val(6.00); 

вы увидите, что он показывает 6.

Если вы

$(this).val(6.50); 

он покажет 6.5, но и ошибка, что это не является допустимым значением.

Что случилось с ошибкой?

Значение по умолчанию step Значение ввода - 1, что делает Firefox только считая числа действительными, которые являются кратными этому.

Если вы установили step="0.01", то Firefox считает числа с плавающей точкой действительными.

Но форматирование все еще неверны

Однако, это еще не будет показывать десятые для целых чисел. Я предполагаю, что именно так дается то, что спецификация не описывает, как нужно форматировать значение.

Если формат для вас более важен, чем функциональность ввода номера, вместо этого используйте обычный текстовый ввод.

+2

https://bugzilla.mozilla.org/show_bug.cgi?id=1003896 Добавление цитаты для усечения. –

+0

@BrooklynWebDevelopers: Хорошая находка! Соответствующий комментарий из потока: * «Проблема в том, что на самом деле валюта нам не« номер »в том смысле, что вы можете просто ввести число обычным способом и выглядеть так, как надо. Это строка, которая выглядит как сортировка как число в некоторых, но не во всех случаях.Например, британская валюта до 1971 года делает это совершенно ясным ». * –

+0

Так что, я думаю, мне не повезло, если я не могу использовать type =" text ", правильно? –

0

Это похоже на работу для меня в следующем jsfiddle:

<input tabindex="1" class="drawer f-right m-left w50 right-text" type="number" placeholder="0.00" /> 

$('input.drawer').on('blur', function() { 
    var number = parseFloat($(this).val()); 
    var n = number.toFixed(2); 
    $(this).val(n); 
}); 

Какой ваш точный код. Единственное, что вы не можете ввести символ «$» в поле чисел. Это потерпит неудачу. Так, например: «3.4512» получает усечение до «3.45» и устанавливается правильно, но «$ 3,4512» просто очищается, когда я его пытаюсь.

https://jsfiddle.net/bz0os3kp/1/

Ваш код, кажется, работает. Однако он обрезает конечные нули в firefox.

+0

В этом проблема, мне нужна задняя нули в FireFox и, кстати, с помощью type = "text" не является опцией, это должен быть номер для мобильных возможностей. –

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