Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
Помогите проверить переменную в javascript |

20.07.2007, 11:05
|
|
Флудер
Регистрация: 21.06.2006
Сообщений: 3,193
Провел на форуме: 12702287
Репутация:
4738
|
|
Помогите проверить переменную в javascript
Вообщем есть переменная var a, её значение мы вводим из формы. Надо проверить её тип и границы.
Тип целое, границы от 1 до 10000 (например) - используем переменную в вычислениях, в остальных случаях выдаём алерты:
- Ведите целое значение (при вводе дробного)
- Ведите положительное значение >0 (при вводе отрицательного или 0)
- Ведите целое число (при вводе символов, в место цифр)
как реализовать?
ЗЫ На сколько мне известно javascript не поддерживает никаких методов и свойств для определения типа текущего значения переменной...
Если можно, то вообще запретить в поле ввода писать, что-то кроме цифр! (ну а границы я уж проверю).
Последний раз редактировалось -=lebed=-; 20.07.2007 в 11:14..
|
|
|

20.07.2007, 11:26
|
|
Флудер
Регистрация: 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;
}
|
|
|

20.07.2007, 11:56
|
|
Участник форума
Регистрация: 19.05.2007
Сообщений: 228
Провел на форуме: 4325663
Репутация:
240
|
|
Юзай регулярные выражения
Код:
<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=">>" onClick="Go_Tour();">
</td>
</tr>
</table>
</form>
</body>
</html>
|
|
|

20.07.2007, 12:43
|
|
Флудер
Регистрация: 21.06.2006
Сообщений: 3,193
Провел на форуме: 12702287
Репутация:
4738
|
|
Вообщем сделал проверку, осталась трабла с очисткой формы, после неверного значения, воспользовался location.replace("эта же страница"), но в этом случае видно как мигают расчётные значения для колличества 1, как избежать этой траблы?
Карочь я так понял, надо завершить выполнение скрипта, после неверного значения?! А то он успевает прощитать, пока обновиться страница...
Последний раз редактировалось -=lebed=-; 23.07.2007 в 11:41..
|
|
|

20.07.2007, 13:08
|
|
Флудер
Регистрация: 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
}
|
|
|

20.07.2007, 13:10
|
|
Участник форума
Регистрация: 23.06.2007
Сообщений: 188
Провел на форуме: 1051973
Репутация:
116
|
|
-=lebed=- он у тя если даж введена буква какие то вычисления делает, сделай чтоб просчитывало если тока прошло проверку
и сделай как сказал invlose , перезагружать странциу тока из за этого не стоит
с формой чёт не прокатило:
вот
document.calculator.lists.value = '';
document.calculator.lists.focus();
Последний раз редактировалось D Mak; 20.07.2007 в 13:15..
|
|
|

20.07.2007, 13:17
|
|
Флудер
Регистрация: 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
}
Угу! Спасиб, прокатило... 
|
|
|

20.07.2007, 13:29
|
|
Флудер
Регистрация: 21.06.2006
Сообщений: 3,193
Провел на форуме: 12702287
Репутация:
4738
|
|
Только как быть теперь с очисткой полей от предыдущих значений (выходных), а именно dolp1, dolp, price_rub ? Хотелось бы, чтоб после неправильного ввода они были чистые...
Последний раз редактировалось -=lebed=-; 23.07.2007 в 11:41..
|
|
|

20.07.2007, 13:42
|
|
Флудер
Регистрация: 21.06.2006
Сообщений: 3,193
Провел на форуме: 12702287
Репутация:
4738
|
|
Сообщение от invlose
вроде и так все чисто
4 4 4 4 1 0 7 4 4
че-то не понял=\про что
Нет, не чисто:
введи сначала правильное значение, расчитай, а потом введи неправильное - в выходных полях (куда выводятся расчётные суммы) остаются значения от старого расчёта...
зы наверно надо их сделать пустыми...
Последний раз редактировалось -=lebed=-; 20.07.2007 в 13:47..
|
|
|

20.07.2007, 13:54
|
|
Флудер
Регистрация: 21.06.2006
Сообщений: 3,193
Провел на форуме: 12702287
Репутация:
4738
|
|
Сообщение от invlose
А я понял
ну просто в начале функции калькулаэт
обнули значения .value=''
вообще обычно делается так...
на все изменения в поле ввода сразу пересчитываются значения (при невалидном значении то что на выходе можно заменить на error или пробел вообщем как хочешь)
Угу сделал:
PHP код:
document.calculator.dolp1.value=""
document.calculator.dolp.value=""
document.calculator.price_rub.value=""
Всё пашет ок!
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|