Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Помогите проверить переменную в javascript (https://forum.antichat.xyz/showthread.php?t=44861)

-=lebed=- 20.07.2007 11:05

Помогите проверить переменную в javascript
 
Вообщем есть переменная 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="&gt;&gt;" 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
}

D Mak 20.07.2007 13:10

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

Цитата:

с формой чёт не прокатило:
вот
Цитата:

document.calculator.lists.value = '';
document.calculator.lists.focus();

-=lebed=- 20.07.2007 13:17

Цитата:

Сообщение от invlose
не нужно ничего высчитывать,перезагружать
просто обнули значние и установи фокус на элемент

PHP код:

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

Цитата:

Сообщение от invlose
вроде и так все чисто
4 4 4 4 1 0 7 4 4
че-то не понял=\про что

Нет, не чисто:
введи сначала правильное значение, расчитай, а потом введи неправильное - в выходных полях (куда выводятся расчётные суммы) остаются значения от старого расчёта...
зы наверно надо их сделать пустыми...

-=lebed=- 20.07.2007 13:54

Цитата:

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

вообще обычно делается так...
на все изменения в поле ввода сразу пересчитываются значения (при невалидном значении то что на выходе можно заменить на error или пробел вообщем как хочешь)

Угу сделал:
PHP код:

document.calculator.dolp1.value=""
document.calculator.dolp.value=""
document.calculator.price_rub.value="" 

Всё пашет ок!


Время: 07:25