Помогите проверить переменную в javascript

Discussion in 'PHP' started by -=lebed=-, 20 Jul 2007.

  1. -=lebed=-

    -=lebed=- хэшкрякер

    Joined:
    21 Jun 2006
    Messages:
    3,803
    Likes Received:
    1,957
    Reputations:
    594
    Вообщем есть переменная var a, её значение мы вводим из формы. Надо проверить её тип и границы.

    Тип целое, границы от 1 до 10000 (например) - используем переменную в вычислениях, в остальных случаях выдаём алерты:
    - Ведите целое значение (при вводе дробного)
    - Ведите положительное значение >0 (при вводе отрицательного или 0)
    - Ведите целое число (при вводе символов, в место цифр)

    как реализовать?

    ЗЫ На сколько мне известно javascript не поддерживает никаких методов и свойств для определения типа текущего значения переменной...

    Если можно, то вообще запретить в поле ввода писать, что-то кроме цифр! (ну а границы я уж проверю).
     
    #1 -=lebed=-, 20 Jul 2007
    Last edited: 20 Jul 2007
  2. -=lebed=-

    -=lebed=- хэшкрякер

    Joined:
    21 Jun 2006
    Messages:
    3,803
    Likes Received:
    1,957
    Reputations:
    594
    Вот нашёл одну функцию проверки:
     
  3. The_HuliGun

    The_HuliGun Elder - Старейшина

    Joined:
    19 May 2007
    Messages:
    191
    Likes Received:
    84
    Reputations:
    11
    Юзай регулярные выражения
    Code:
    <html> 
    <head> 
    <script>  
    <!--  
    function Go_Tour(){ 
       
       res=/^(-?)(\d*)$/.test(document.MyForm.Enter.value); 
       if (res==false) { 
         res=/^(\d*).(\d*)$/.test(document.MyForm.Enter.value);
          if (res==true) {alert("Введите целое значение!")}
          if (res==false) {alert("Введите целое число!")}  
       }
       if (document.MyForm.Enter.value<0) alert("Введите положытельное число!");
    }
    
    //-->
    </script>
    </head>
    
    <body>
    <form name="MyForm">
    <table cellpadding=5 cellspacing=0 border=0 bgcolor="#CAD8EA">
    <tr>
        <td colspan=2>
          Число:
        </td>
    </tr>
    
    <tr>
        <td>
          <input name=Enter type=text size=20>    
        </td>
        <td>
          <input type="button" Value="&gt;&gt;" onClick="Go_Tour();">
    
        </td>
    </tr>
    
    </table>
    </form>
    </body>
    </html>
    
     
    2 people like this.
  4. -=lebed=-

    -=lebed=- хэшкрякер

    Joined:
    21 Jun 2006
    Messages:
    3,803
    Likes Received:
    1,957
    Reputations:
    594
    Вообщем сделал проверку, осталась трабла с очисткой формы, после неверного значения, воспользовался location.replace("эта же страница"), но в этом случае видно как мигают расчётные значения для колличества 1, как избежать этой траблы?

    Карочь я так понял, надо завершить выполнение скрипта, после неверного значения?! А то он успевает прощитать, пока обновиться страница...
     
    #4 -=lebed=-, 20 Jul 2007
    Last edited: 23 Jul 2007
  5. -=lebed=-

    -=lebed=- хэшкрякер

    Joined:
    21 Jun 2006
    Messages:
    3,803
    Likes Received:
    1,957
    Reputations:
    594
    добавил return, а с формой чёт не прокатило:
     
  6. D Mak

    D Mak Elder - Старейшина

    Joined:
    23 Jun 2007
    Messages:
    136
    Likes Received:
    27
    Reputations:
    0
    -=lebed=- он у тя если даж введена буква какие то вычисления делает, сделай чтоб просчитывало если тока прошло проверку
    и сделай как сказал invlose , перезагружать странциу тока из за этого не стоит

    вот
     
    #6 D Mak, 20 Jul 2007
    Last edited: 20 Jul 2007
    1 person likes this.
  7. -=lebed=-

    -=lebed=- хэшкрякер

    Joined:
    21 Jun 2006
    Messages:
    3,803
    Likes Received:
    1,957
    Reputations:
    594
    PHP:
    else
    {
    alert("Вы должны ввести целое число в диапазоне от " 
    "1" " до " "100000" " !")
    document.forms.calculator.lists.value='1'
    document.forms.calculator.lists.focus();
    return
    }
    Угу! Спасиб, прокатило... ;)
     
  8. -=lebed=-

    -=lebed=- хэшкрякер

    Joined:
    21 Jun 2006
    Messages:
    3,803
    Likes Received:
    1,957
    Reputations:
    594
    Только как быть теперь с очисткой полей от предыдущих значений (выходных), а именно dolp1, dolp, price_rub ? Хотелось бы, чтоб после неправильного ввода они были чистые...
     
    #8 -=lebed=-, 20 Jul 2007
    Last edited: 23 Jul 2007
  9. -=lebed=-

    -=lebed=- хэшкрякер

    Joined:
    21 Jun 2006
    Messages:
    3,803
    Likes Received:
    1,957
    Reputations:
    594
    Нет, не чисто:
    введи сначала правильное значение, расчитай, а потом введи неправильное - в выходных полях (куда выводятся расчётные суммы) остаются значения от старого расчёта...
    зы наверно надо их сделать пустыми...
     
    #9 -=lebed=-, 20 Jul 2007
    Last edited: 20 Jul 2007
  10. -=lebed=-

    -=lebed=- хэшкрякер

    Joined:
    21 Jun 2006
    Messages:
    3,803
    Likes Received:
    1,957
    Reputations:
    594
    Угу сделал:
    PHP:
    document.calculator.dolp1.value=""
    document.calculator.dolp.value=""
    document.calculator.price_rub.value=""
    Всё пашет ок!