больше, чем поле ввода валюты - PullRequest
0 голосов
/ 09 февраля 2012

У меня есть этот тег ввода, куда вы помещаете сумму чека:

<input type="text" name="currency" id="currency" class="text-input" onBlur="this.value=formatCurrency(this.value);"   />

Javascript выглядит следующим образом:

<script type="text/javascript">

function formatCurrency(num) {
    num = num.toString().replace(/\$|\,/g,'');
    if(isNaN(num)) {
        num = "0";
    }
    sign = (num == (num = Math.abs(num)));
    num = Math.floor(num*100+0.50000000001);
    cents = num % 100;
    num = Math.floor(num/100).toString();
    if(cents < 10) {
        cents = "0" + cents;
    }
    for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++) {
        num = num.substring(0,num.length-(4*i+3))+','+num.substring(num.length-(4*i+3));
    }
    return (((sign)?'':'-') + '$' + num + '.' + cents);
}

</script>

Пользователи могут вводить квитанции только за 10 долларов США, как я могу установить это в своем скрипте? Также им нужно знать, что они не могут ввести валюту менее чем за 10 долларов США.

Ответы [ 3 ]

0 голосов
/ 09 февраля 2012

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

function formatCurrency(num) {

    // Remove the dollar sign
    num = num.replace("$", "");

    // Change the string to a float, and limit to 2 decimal places
    num = parseFloat(num);
    Math.round(num * 100) / 100;

    // If its less than 10, reject it
    if(num < 10) {
        alert("Too small!");
        return false;
    }

    // Return a nice string
    return "$" + num;

}

В конце концов, пытаетесь ли вы вернуть -$99.94, если число отрицательное?

0 голосов
/ 09 февраля 2012

Из того, что я могу извлечь из вашего вопроса, я думаю, что вы ищете что-то вроде этого.В основном, если у нас есть допустимая запись, такая как $100.00, мы продолжаем, возвращаем true и т. Д., В противном случае, если у нас есть что-то, похожее на int или float, мы можем переформатировать это и повторить функцию, в противном случае подсказка user для vaild entry

var foo = document.getElementById('foo');

foo.addEventListener('blur', function(e) {
    var val = e.target.value;
    var err = document.getElementById('err');
    var errMsg = 'please enter a value $10.00 or greater';
    var patt = /^\$\d+\.\d{2}$/;    
    var amount = parseInt(val.replace(/\$|\./g, ''));

    if (val !== '') {
        if (patt.test(val)) {
            if (amount < 1000) {
                err.textContent = errMsg;
            } else {
                document.getElementById('suc')
                    .textContent = 'processing request';
            }
        } else if (typeof amount == 'number' && !/[a-z]/g.test(val)) {
            if (/\.\d{2}/.test(val)) {
                e.target.value = '$' + (amount / 100);
            } else {
                e.target.value = '$' + amount + '.00';
            }
            arguments.callee(e);
        } else {
            err.textContent = errMsg;
        }
    }
});

вот демоверсия

0 голосов
/ 09 февраля 2012

Вы можете применить функцию проверки при отправке формы для проверки, если значение ниже порогового значения, например:

function validate()
{
  value = document.getElementById('currency');
  if (value <= 10.00)
  {
    return false
  } else
  {
    return true;
  }
}

Вы также можете применить это к событию onblur, но я предпочитаю сообщать об ошибках проверки при отправке формы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...