Forum Webscript.Ru

Программирование => JavaScript & JScript => Тема начата: Skyer от 16 Мая 2004, 20:51:24

Название: Проверить, являются ли данные из формы только цифрами, или содержат так же буквы.
Отправлено: Skyer от 16 Мая 2004, 20:51:24
Я уже создавал эту тему в PHP-форуме, но сейчас мне такое понадобилось и на JS. Искал в ФАКе, искал в Интернете, но что-то не работают варианты, которые я находил. Соответственно, логику пока тоже не смог понять.

Как это сделать?
Название: Проверить, являются ли данные из формы только цифрами, или содержат так же буквы.
Отправлено: Макс от 17 Мая 2004, 14:54:33
var _digits   = /^[0-9]+$/;
if (!_digits.test(document.form.field_name.value)) {
   alert("Поле может содержать только цифры");
   return false;
}
Название: Проверить, являются ли данные из формы только цифрами, или содержат так же буквы.
Отправлено: ThE0ReTiC от 17 Мая 2004, 15:01:18
Исчо вариант

function onlyDigits(the_form,the_element)
{
var elt = document.forms[the_form].elements[the_element];
var elt_cnt = (typeof(elt.value.length) != \'undefined\')
                  ? elt.value.length
                  : 0;

        if (elt_cnt)
        {
        nnil = new String(\'0\');
        ordnil = nnil.charCodeAt(0);

        nnine = new String(\'9\');
        ordnine = nnine.charCodeAt(0);

        ndot = new String(\'.\');
        orddot = ndot.charCodeAt(0);

        for (var i = 0; i < elt_cnt; i++)
        {
        var chr = elt.value.charAt(i);
        var och = elt.value.charCodeAt(i);
        l = new String(elt.value);

        myReg = new RegExp(chr,"gi");

        if ((och < ordnil || och > ordnine) && och != orddot)
        {
        elt.value = l.replace(myReg,\'\');
        }
        }
        }

}

правда у него задача не дать вбить в поле ничего кроме цифр и точки.
работает в реальном времени :)
Название: Проверить, являются ли данные из формы только цифрами, или содержат так же буквы.
Отправлено: Skyer от 17 Мая 2004, 20:56:16
ThE0ReTiC
Как форма в таком случае выглядеть должна?

Макс
Скопипейстил, не сработало. Как должна форма выглядеть при таком скрипте?

У каждой формы у меня такие имена




.............
и т.д.
Название: Проверить, являются ли данные из формы только цифрами, или содержат так же буквы.
Отправлено: ThE0ReTiC от 18 Мая 2004, 10:19:03
как угодно
ты же передаешь в функцию
the_form,the_element
Название: Проверить, являются ли данные из формы только цифрами, или содержат так же буквы.
Отправлено: Skyer от 18 Мая 2004, 18:17:10
ThE0ReTiC
Я не опытный в JS, и то, что я попробовал - не сработало.. Я пробовал эти варианты(в начале файла - твоя функция, в конце - эти варианты:

1)


echo \'









\';

?>

2).


echo \'









\';

?>

3).


echo \'









\';

?>

И ещё те же варианты, но  onclick="onlyDigits()"
Название: Проверить, являются ли данные из формы только цифрами, или содержат так же буквы.
Отправлено: Макс от 18 Мая 2004, 18:41:08
Цитировать
Skyer:
Скопипейстил, не сработало. Как должна форма выглядеть при таком скрипте?

это код для функции обработчика onsubmit :

....
и в функции onSubmitHandler() пишешь мой код.
field_name в коде - это имя поля, которое проверяешь.
Готовый, рабочий код для copy/paste не дам, а то ты вообще ножки свесил, JS не учишь, разобраться не пытаешься
Название: Проверить, являются ли данные из формы только цифрами, или содержат так же буквы.
Отправлено: Skyer от 18 Мая 2004, 19:01:49
Цитировать
Готовый, рабочий код для copy/paste не дам, а то ты вообще ножки свесил, JS не учишь, разобраться не пытаешься

Пытаюсь, но не получается. Просто прогу надо бы побыстрее сделать, поэтому я взял средний вариант - пытаюсь понять сам, но если не получается - не тяну с обучением, и спрашиваю:)
Название: Проверить, являются ли данные из формы только цифрами, или содержат так же буквы.
Отправлено: ThE0ReTiC от 18 Мая 2004, 19:52:42
Skyer
А х ты мать моя...
я те забыл сказать, что вешать это надо на Onkeyup текстбокса
Название: Проверить, являются ли данные из формы только цифрами, или содержат так же буквы.
Отправлено: ThE0ReTiC от 18 Мая 2004, 19:53:59




Название: Проверить, являются ли данные из формы только цифрами, или содержат так же буквы.
Отправлено: Skyer от 18 Мая 2004, 20:01:14
Макс
Спасибо! Твой вариант дискретно работает. Как адаптировать его под:




.............
и т.д.

Я попробовал вот это:


...........




Не работает.
Название: Проверить, являются ли данные из формы только цифрами, или содержат так же буквы.
Отправлено: Макс от 18 Мая 2004, 21:13:23
Skyer
посмотри свою прошлую тему, где надо было помечать все поля.
Посмотри, как там была организована работа через массив elements[]
Точно также и здесь сделай
Название: Проверить, являются ли данные из формы только цифрами, или содержат так же буквы.
Отправлено: Skyer от 26 Мая 2004, 16:39:04
Макс
Как в javascript выглядит: "Если имя поля = newnomer"?
Название: Проверить, являются ли данные из формы только цифрами, или содержат так же буквы.
Отправлено: Макс от 26 Мая 2004, 16:48:04
document.form.elements[\'newowner\'].value
у меня в IE так работает. Про другие броузеры не знаю
Название: Проверить, являются ли данные из формы только цифрами, или содержат так же буквы.
Отправлено: Skyer от 28 Мая 2004, 13:39:00
Макс
Пытаюсь обкатать этот вариант, он работает во всех браузерах, если индекс массива - цифра(\'newnomer\'). Но почему не работает это, где ошибка:






Название: Проверить, являются ли данные из формы только цифрами, или содержат так же буквы.
Отправлено: Макс от 28 Мая 2004, 13:47:24
зачем тебе цикл?  у тебя же в форме только одно поле.
Название: Проверить, являются ли данные из формы только цифрами, или содержат так же буквы.
Отправлено: Skyer от 28 Мая 2004, 14:06:41
Это пример, по которому я хочу понять как работает. В моей программе мне нужен цикл.
Название: Проверить, являются ли данные из формы только цифрами, или содержат так же буквы.
Отправлено: Макс от 28 Мая 2004, 14:28:12
Посмотри как работает такой пример :




- цифровой индекс

- индекс равен i



и подумай, почему так
Название: Проверить, являются ли данные из формы только цифрами, или содержат так же буквы.
Отправлено: Skyer от 28 Мая 2004, 14:35:21
Понятно - "i" он воспринимает как букву, а не как переменную. Как сделать так, чтобы воспринимал как переменную? Убирал кавычки - не работает.
Название: Проверить, являются ли данные из формы только цифрами, или содержат так же буквы.
Отправлено: Макс от 28 Мая 2004, 15:02:06
в document.forma.elements["slava"].value  "slava" - это строка (Что такое типы данных и строковые типы данных в частности знаешь ?). Со строками в яваскрипте работать умеешь ?



Название: Проверить, являются ли данные из формы только цифрами, или содержат так же буквы.
Отправлено: Skyer от 28 Мая 2004, 15:26:16
Насколько я знаю, строки плюсуются другг к другу (+)

Вот такое:

document.forma.elements["slava["+i+"]"].value = \'Slava\';

не работает.
Название: Проверить, являются ли данные из формы только цифрами, или содержат так же буквы.
Отправлено: Skyer от 28 Мая 2004, 21:44:00
Хотя нет, работает.

document.forma.elements["slava["+i+"]"].value = \'Slava\';

выполняется, если



.....
и т.д.

Но при этом не работает это:

if (document.forma.elements["slava["+i+"]"])

То есть, проверка, существует ли вообще данный элемент формы. Как сделать так, чтобы эта проверка работала?
Название: Проверить, являются ли данные из формы только цифрами, или содержат так же буквы.
Отправлено: Макс от 29 Мая 2004, 12:13:33
через typeof()
Название: Проверить, являются ли данные из формы только цифрами, или содержат так же буквы.
Отправлено: Skyer от 29 Мая 2004, 20:44:19
Макс
Пока я пытаюсь найти, как эту typeof() использовать, объясни, плиз, почему if (document.forma.elements["slava["+i+"]"].value == "что-то")  {}  не работает, в то время как вот этот вариант - document.forma.elements["slava["+i+"]"].value = \'что-то\'; - выполняется.
Название: Проверить, являются ли данные из формы только цифрами, или содержат так же буквы.
Отправлено: Макс от 30 Мая 2004, 12:50:11
повторяю тебе уже в который раз
Фраза "не работает" - не несет никакой смысловой нагрузки. По этой фразе я ничего определить не могу
Название: Проверить, являются ли данные из формы только цифрами, или содержат так же буквы.
Отправлено: Skyer от 30 Мая 2004, 19:19:12
Макс
Спасибо! Скрипт заработал.