#javascript #jquery
#javascript #jquery
Вопрос:
Пожалуйста, ознакомьтесь с скрипкой здесь
В JS у меня есть некоторый вывод для числа. Это число в настоящее время без разделителя запятой.
Я хотел бы добавить запятую в тысячном месте.
Вот мой выходной фрагмент —
<input type="text" disabled="disabled" class="savings numbers" id="moneySaved">
Вот JS, который идет с этим —
$("#moneySaved").val("$" (resultNonNursing*402) ( " in tuition costs")); //# of credits * cost per credit ($402)
Я пытаюсь использовать форматировщик чисел jQuery. У меня есть это в заголовке —
$(document).ready(function() {
$(".numbers").each(function() {
$(this).format({format:"#,###", locale:"us"});
});
});
И я добавил numbers
класс в вывод html —
<input type="text" disabled="disabled" class="savings numbers" id="moneySaved">
…но это не работает.
Можете ли вы указать здесь какое-то направление?
Комментарии:
1. Что вы имеете в виду, это не работает? Можете ли вы объяснить, что вы получаете в результате? Я и многие другие пользователи SO не можем смотреть на вашу скрипку, потому что она ограничена в работе.
2. Ну, я не получаю разделитель запятой. Вывод
1234
и я пытаюсь выполнить1,234
, или123,456,789
, и123
.3. Это проблема с упорядочением? Вы применяете формат ко всем числам перед установкой значения. Вам не нужно . каждый, кстати, вы могли бы просто использовать
$('.numbers').format(...)
.
Ответ №1:
Number.prototype.format = function(){
return this.toString().replace(/(d)(?=(d{3}) (?!d))/g, "$1,");
};
или, если вам это не нравится
anumber.toString().replace(/(d)(?=(ddd) (?!d))/g, "$1,");
Комментарии:
1. Я бы предположил, что это единственный случай, когда он использует вызов функции этого формата, так что это именно то, что он хотел бы.
2. ваше второе решение намного лучше
3. Вы можете либо добавить Number.prototype и вызвать format без каких-либо аргументов (он же number.format();), либо заменить $(this) . format({format:»#,###», locale:»us»}); с помощью $(this).replace(/(d)(?=(d d d) (?!d))/g, «$ 1,»);
4. Вот обновленная скрипка . Это не работает. Я добавил его, как вы предложили. Мысли?
5. ваша функция находится в режиме готовности документа и не будет запускаться более одного раза, вы должны подключить функцию к событию, которое имеет смысл, например onkeyup или onchange для текстового поля.