2014-10-21 2 views
1

Я избегал задавать этот вопрос здесь, как я знаю, многие в прошлом. В течение последних нескольких дней я провел некоторое время, пытаясь найти решение/выяснить, как работает метод toFixed(). Я прочитал много вопросов на этом сайте и учебники о других, но я все еще не понимаю.toFixed() Простое использование/пояснение в текстовом поле

У меня есть несколько текстовых полей с классом «.entry». Предполагается, что здесь будет долларовая сумма. Когда люди типа следующее (примеры):

1,2
6,35
8.

мне нужно их изменить, чтобы:

1,20
5,00
6,35
8,00

Другими словами, добавьте конечные нули. Я знаю, что это достигается с помощью метода toFixed(), но я полностью в недоумении. Я не могу заставить его работать.

У меня есть сценарий, я обнаружил, что составляет все текстовые поля в DIV в другом месте на странице, и я заметил, что он использует метод toFixed():

$("#total").html(sum.toFixed(2).replace(/(^\d{1,3}|\d{3})(?=(?:\d{3})+(?:$|\.))/g, '$1,')); 
} 

Я попытался с помощью этой же коды здесь так нули могут отображаться в текстовом поле:

$('.entry').keyup(function(){ 
    var str = this.value.replace(/(^\d{1,3}|\d{3})(?=(?:\d{3})+(?:$|\.))/g, '$1'); 
    if (str!=this.value) this.value = str; 
}); 

Это не работает.

Я новичок в JQuery и Javascript, поэтому понимаю, что, вероятно, я пропустил что-то очевидное. Большинство учебников я прочитал установить переменную в коде, а затем использовать «document.write», чтобы отобразить переменную с нужным количеством нулей:

Пример:

document.write(1.1.toFixed(2) + '<br>'); 

Но этот ISN» что я ищу. Мне нужно, чтобы он отображался в текстовом поле.

Заранее благодарен!

+0

Проверьте документацию для .val() http://api.jquery.com/val/ – beauXjames

+0

Вы не можете использовать 'document.write' после страница была оказана , Он заменит все содержимое. – Mordred

ответ

1

Несколько вещей:

  1. Используйте кнопки change событие вместо keyup. Если вы используете keyup, текст wil меняется каждый раз, когда пользователь пытается ввести что-то, что вызывает раздражение пользователя.
  2. Рассмотрите возможность использования input типа number с шагом 0.1.

С теми, в виду, что я сделаю что-то вроде этого:

$('.entry').change(function(){ 
    // parse the typed value as a floating point number 
    var num = parseFloat(this.value); 

    // ensure there are two decimal places 
    this.value = num.toFixed(2); 
}); 

Обратите внимание, что если пользователь что-то более двух знаков после запятой, значение будет округлено.

Пример:http://jsfiddle.net/jndt1e02/

+0

Большое спасибо за сценарий и советы! Прекрасно работает! :) – SAULMARQ

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