ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Помогите проверить переменную в javascript
  #1  
Старый 20.07.2007, 11:05
Аватар для -=lebed=-
-=lebed=-
Флудер
Регистрация: 21.06.2006
Сообщений: 3,193
Провел на форуме:
12702287

Репутация: 4738


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

Вообщем есть переменная var a, её значение мы вводим из формы. Надо проверить её тип и границы.

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

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

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

Если можно, то вообще запретить в поле ввода писать, что-то кроме цифр! (ну а границы я уж проверю).

Последний раз редактировалось -=lebed=-; 20.07.2007 в 11:14..
 
Ответить с цитированием

  #2  
Старый 20.07.2007, 11:26
Аватар для -=lebed=-
-=lebed=-
Флудер
Регистрация: 21.06.2006
Сообщений: 3,193
Провел на форуме:
12702287

Репутация: 4738


По умолчанию

Вот нашёл одну функцию проверки:
Цитата:
function checkInt(form, input, min, max)
{
var i = eval(form + "." + input + ".value");

if(i>=min && i<=max && i.indexOf(".")==-1)
return true;
else
{
alert("Вы должны ввести целое число в диапазоне от "
+ min + " до " + max + " !");
eval(form + "." + input + ".select()");
eval(form + "." + input + ".focus()");
return false;
}
 
Ответить с цитированием

  #3  
Старый 20.07.2007, 11:56
Аватар для The_HuliGun
The_HuliGun
Участник форума
Регистрация: 19.05.2007
Сообщений: 228
Провел на форуме:
4325663

Репутация: 240
Отправить сообщение для The_HuliGun с помощью ICQ
По умолчанию

Юзай регулярные выражения
Код:
<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>
 
Ответить с цитированием

  #4  
Старый 20.07.2007, 12:43
Аватар для -=lebed=-
-=lebed=-
Флудер
Регистрация: 21.06.2006
Сообщений: 3,193
Провел на форуме:
12702287

Репутация: 4738


По умолчанию

Вообщем сделал проверку, осталась трабла с очисткой формы, после неверного значения, воспользовался location.replace("эта же страница"), но в этом случае видно как мигают расчётные значения для колличества 1, как избежать этой траблы?

Карочь я так понял, надо завершить выполнение скрипта, после неверного значения?! А то он успевает прощитать, пока обновиться страница...

Последний раз редактировалось -=lebed=-; 23.07.2007 в 11:41..
 
Ответить с цитированием

  #5  
Старый 20.07.2007, 13:08
Аватар для -=lebed=-
-=lebed=-
Флудер
Регистрация: 21.06.2006
Сообщений: 3,193
Провел на форуме:
12702287

Репутация: 4738


По умолчанию

добавил return, а с формой чёт не прокатило:
Цитата:
var price_rub_1 = 0;
var dol1 = 0;
var dol = 0;
var paper_p = 0;
var lists = 0;
listssum = document.calculator.lists.value;
if(listssum>=1 && listssum<=100000 && listssum.indexOf(".")==-1)
{}
else
{alert("Вы должны ввести целое число в диапазоне от "
+ "1" + " до " + "100000" + " !")
location.replace("price4.html");
return
}
 
Ответить с цитированием

  #6  
Старый 20.07.2007, 13:10
Аватар для D Mak
D Mak
Участник форума
Регистрация: 23.06.2007
Сообщений: 188
Провел на форуме:
1051973

Репутация: 116
Отправить сообщение для D Mak с помощью ICQ
По умолчанию

-=lebed=- он у тя если даж введена буква какие то вычисления делает, сделай чтоб просчитывало если тока прошло проверку
и сделай как сказал invlose , перезагружать странциу тока из за этого не стоит

Цитата:
с формой чёт не прокатило:
вот
Цитата:
document.calculator.lists.value = '';
document.calculator.lists.focus();

Последний раз редактировалось D Mak; 20.07.2007 в 13:15..
 
Ответить с цитированием

  #7  
Старый 20.07.2007, 13:17
Аватар для -=lebed=-
-=lebed=-
Флудер
Регистрация: 21.06.2006
Сообщений: 3,193
Провел на форуме:
12702287

Репутация: 4738


По умолчанию

Цитата:
Сообщение от invlose  
не нужно ничего высчитывать,перезагружать
просто обнули значние и установи фокус на элемент
PHP код:
else
{
alert("Вы должны ввести целое число в диапазоне от " 
"1" " до " "100000" " !")
document.forms.calculator.lists.value='1'
document.forms.calculator.lists.focus();
return

Угу! Спасиб, прокатило...
 
Ответить с цитированием

  #8  
Старый 20.07.2007, 13:29
Аватар для -=lebed=-
-=lebed=-
Флудер
Регистрация: 21.06.2006
Сообщений: 3,193
Провел на форуме:
12702287

Репутация: 4738


По умолчанию

Только как быть теперь с очисткой полей от предыдущих значений (выходных), а именно dolp1, dolp, price_rub ? Хотелось бы, чтоб после неправильного ввода они были чистые...

Последний раз редактировалось -=lebed=-; 23.07.2007 в 11:41..
 
Ответить с цитированием

  #9  
Старый 20.07.2007, 13:42
Аватар для -=lebed=-
-=lebed=-
Флудер
Регистрация: 21.06.2006
Сообщений: 3,193
Провел на форуме:
12702287

Репутация: 4738


По умолчанию

Цитата:
Сообщение от invlose  
вроде и так все чисто
4 4 4 4 1 0 7 4 4
че-то не понял=\про что
Нет, не чисто:
введи сначала правильное значение, расчитай, а потом введи неправильное - в выходных полях (куда выводятся расчётные суммы) остаются значения от старого расчёта...
зы наверно надо их сделать пустыми...

Последний раз редактировалось -=lebed=-; 20.07.2007 в 13:47..
 
Ответить с цитированием

  #10  
Старый 20.07.2007, 13:54
Аватар для -=lebed=-
-=lebed=-
Флудер
Регистрация: 21.06.2006
Сообщений: 3,193
Провел на форуме:
12702287

Репутация: 4738


По умолчанию

Цитата:
Сообщение от invlose  
А я понял
ну просто в начале функции калькулаэт
обнули значения .value=''

вообще обычно делается так...
на все изменения в поле ввода сразу пересчитываются значения (при невалидном значении то что на выходе можно заменить на error или пробел вообщем как хочешь)
Угу сделал:
PHP код:
document.calculator.dolp1.value=""
document.calculator.dolp.value=""
document.calculator.price_rub.value="" 
Всё пашет ок!
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ПРОВЕРКА почти всех уязвимостей и багов! _GaLs_ Избранное 8 14.06.2010 12:00
ПомогитЕ !!! подалуста найти кряк гейлордфакерЪ Болталка 2 30.08.2007 14:48
ПоМоГиТе! ПЛЗ!!! farik.aka E-Mail 1 17.09.2006 13:00
Bypassing JavaScript Filters the Flash! Attack k00p3r Чужие Статьи 0 12.07.2005 16:11



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ