javascript .keyup правильное форматирование цены и многое другое - PullRequest
3 голосов
/ 11 ноября 2011

Пока у меня есть это, которое состоит из фрагментов.Пока я не специалист по JavaScript, поэтому если бы кто-нибудь мог помочь мне достичь следующего, я был бы очень благодарен и, надеюсь, узнал бы что-то новое сегодня:)

Я хочу добиться следующего:

Когда пользователь вводит 1000000 в поле ввода, отображаются следующие результаты:

  1. выше 1 миллиона долларов
  2. меньше 1 миллиона долларов
  3. от 970 тысяч до 1,3 долларамиллион

В настоящее время я могу добиться правильного отображения цифр к ценам, но не знаю, как добавить слово миллион, тысяча, сотня к концу цены.Кроме того, я не уверен, как вычесть 3% и добавить 3% к цене для промежуточной части цены.

Вот мой код:

<input type="text" id="price" class="liveprice" value="<?php echo $myprice; ?>" >   
<p>Higher than <span id="higher"><?php echo $myprice;?></span></p>
<p>Lower than <span id="lower"><?php echo $myprice;?></span></p> 
<p>In between <span id="between"><?php echo $myprice;?></span></p> 

<script type="text/javascript">
// make sure it adds commas and dots to price
$.fn.digits = function() {
    return this.each(function() {
        $(this).text($(this).text().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,"));
    })
}

// update in real time
$("input.liveprice").keyup(function() {

    var value = $(this).val();

    $("#higher").text(value).digits();
    $("#lower").text(value).digits();
    $("#between").text(value).digits();

}).keyup();
</script>

1 Ответ

4 голосов
/ 11 ноября 2011

Если вы хотите узнать, превышает ли оно 1 миллион, разделите число на 1 миллион, а затем округлите число, используя Math.floor().Если ответ выше нуля, то это «сколько миллионов» у вас есть.Затем вы можете вставить слово миллион, используя что-то вроде (вам нужно добавить кое-что здесь):

var val = $('your input').val()/1000000;
if (Math.floor(val) > 0) {
    $('your element with words').text( val + " million" );
}

Сделайте то же самое для 1000, но просто разделите на 1000 вместо 1000000.

...