Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: для новичков > 0 в javascript


Автор: EDuard 30.6.2008, 15:52
Возник следующий вопрос.

Код:

Код

if(parseFloat(p_firs_payment)<0 || parseFloat(p_firs_payment)>100){
                alert("от 0 до 100%");
                return false;
            }


Однако скрипт воспиринимает только значения от 1 до 100, при 0 же выскакивает алерт, почему?
Как можно учесть 0?

Автор: comtat 1.7.2008, 00:40
Цитата(EDuard @  30.6.2008,  15:52 Найти цитируемый пост)
при 0 же выскакивает алерт, почему?

Вы уверены что приходит значение именно 0  ??
Вот сделал такую вещь и при 0 скрипт отрабатывает верно
Код

<html>
<head><title></title></head>
<body>
<span style="cursor:pointer;" onclick='tt(0);'>sdfsdf</span>
<script>
function tt(p_firs_payment) {
    if(parseFloat(p_firs_payment)<0 || parseFloat(p_firs_payment)>100){
        alert("от 0 до 100%");
        return false;
    }
}
</script>
</body>
</html>

Автор: SelenIT 1.7.2008, 07:30
Сравнивать float-ы на точное равенство - вообще http://xpoint.ru/know-how/Articles/FloatingPointNumbers... 

Автор: EDuard 1.7.2008, 14:26
Дело в том что значение берется из <input type="text" />

Пробовал parseInt - ситуация аналогичная

Пробовал как строку - тоже не работает

Код

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title></title>
<script>
    function f(){
        payment = document.ff.txt.value;
        if(payment == "") {
            alert("Укажите размер первоначального взноса");
            document.ff.txt.focus();
            return false;
        }else if(!Number(payment)){
            alert("Первоначальный взнос от 0 до 100% от стоимости недвижимости");
            document.ff.txt.focus();
            return false;
        }else if(payment<0 || payment>100){
            alert("Первоначальный взнос от 0 до 100% от стоимости недвижимости");
            document.ff.txt.focus();
            return false;
        }else{
            alert(payment);
            return false;
        }
    }
</script>
<body>
    <form method="post" name="ff" onSubmit="f(); return false;">
        <input type="text" name="txt" />
        <input type="submit" name="submit" value="отправить" />
    </form>
</body>
</html>

Автор: comtat 1.7.2008, 22:46
Ну вот это 
Код
..
}else if(!Number(payment)){
..

никогда не пропустит payment = 0
предлагаю сделать вот так  
Код
..
}else if(!Number(payment) && payment != 0){
..

Автор: EDuard 2.7.2008, 00:20
comtat, Большое спасибо.
+ вам.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)