Просмотр полной версии : Помогите проверить переменную в javascript
-=lebed=-
20.07.2007, 11:05
Вообщем есть переменная var a, её значение мы вводим из формы. Надо проверить её тип и границы.
Тип целое, границы от 1 до 10000 (например) - используем переменную в вычислениях, в остальных случаях выдаём алерты:
- Ведите целое значение (при вводе дробного)
- Ведите положительное значение >0 (при вводе отрицательного или 0)
- Ведите целое число (при вводе символов, в место цифр)
как реализовать?
ЗЫ На сколько мне известно javascript не поддерживает никаких методов и свойств для определения типа текущего значения переменной...
Если можно, то вообще запретить в поле ввода писать, что-то кроме цифр! (ну а границы я уж проверю).
-=lebed=-
20.07.2007, 11:26
Вот нашёл одну функцию проверки:
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;
}
The_HuliGun
20.07.2007, 11:56
Юзай регулярные выражения
<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>
-=lebed=-
20.07.2007, 12:43
Вообщем сделал проверку, осталась трабла с очисткой формы, после неверного значения, воспользовался location.replace("эта же страница"), но в этом случае видно как мигают расчётные значения для колличества 1, как избежать этой траблы?
Карочь я так понял, надо завершить выполнение скрипта, после неверного значения?! А то он успевает прощитать, пока обновиться страница...
-=lebed=-
20.07.2007, 13:08
добавил 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
}
-=lebed=- он у тя если даж введена буква какие то вычисления делает, сделай чтоб просчитывало если тока прошло проверку
и сделай как сказал invlose , перезагружать странциу тока из за этого не стоит
с формой чёт не прокатило:
вот
document.calculator.lists.value = '';
document.calculator.lists.focus();
-=lebed=-
20.07.2007, 13:17
не нужно ничего высчитывать,перезагружать
просто обнули значние и установи фокус на элемент
else
{alert("Вы должны ввести целое число в диапазоне от "
+ "1" + " до " + "100000" + " !")
document.forms.calculator.lists.value='1';
document.forms.calculator.lists.focus();
return
}
Угу! Спасиб, прокатило... ;)
-=lebed=-
20.07.2007, 13:29
Только как быть теперь с очисткой полей от предыдущих значений (выходных), а именно dolp1, dolp, price_rub ? Хотелось бы, чтоб после неправильного ввода они были чистые...
-=lebed=-
20.07.2007, 13:42
вроде и так все чисто
4 4 4 4 1 0 7 4 4
че-то не понял=\про что
Нет, не чисто:
введи сначала правильное значение, расчитай, а потом введи неправильное - в выходных полях (куда выводятся расчётные суммы) остаются значения от старого расчёта...
зы наверно надо их сделать пустыми...
-=lebed=-
20.07.2007, 13:54
А я понял
ну просто в начале функции калькулаэт
обнули значения .value=''
вообще обычно делается так...
на все изменения в поле ввода сразу пересчитываются значения (при невалидном значении то что на выходе можно заменить на error или пробел вообщем как хочешь)
Угу сделал:
document.calculator.dolp1.value=""
document.calculator.dolp.value=""
document.calculator.price_rub.value=""
Всё пашет ок!
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot