Автор Тема: Проверить, являются ли данные из формы только цифрами, или содержат так же буквы.  (Прочитано 8166 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Skyer

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 88
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Я уже создавал эту тему в PHP-форуме, но сейчас мне такое понадобилось и на JS. Искал в ФАКе, искал в Интернете, но что-то не работают варианты, которые я находил. Соответственно, логику пока тоже не смог понять.

Как это сделать?
Чем меньше букв, тем ёмче слово.

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
var _digits   = /^[0-9]+$/;
if (!_digits.test(document.form.field_name.value)) {
   alert("Поле может содержать только цифры");
   return false;
}
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
Исчо вариант

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,\'\');
        }
        }
        }

}

правда у него задача не дать вбить в поле ничего кроме цифр и точки.
работает в реальном времени :)
AS IS...

Оффлайн Skyer

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 88
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
ThE0ReTiC
Как форма в таком случае выглядеть должна?

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

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




.............
и т.д.
Чем меньше букв, тем ёмче слово.

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
как угодно
ты же передаешь в функцию
the_form,the_element
AS IS...

Оффлайн Skyer

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 88
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
ThE0ReTiC
Я не опытный в JS, и то, что я попробовал - не сработало.. Я пробовал эти варианты(в начале файла - твоя функция, в конце - эти варианты:

1)


echo \'









\';

?>

2).


echo \'









\';

?>

3).


echo \'









\';

?>

И ещё те же варианты, но  onclick="onlyDigits()"
Чем меньше букв, тем ёмче слово.

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
Цитировать
Skyer:
Скопипейстил, не сработало. Как должна форма выглядеть при таком скрипте?

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

....
и в функции onSubmitHandler() пишешь мой код.
field_name в коде - это имя поля, которое проверяешь.
Готовый, рабочий код для copy/paste не дам, а то ты вообще ножки свесил, JS не учишь, разобраться не пытаешься
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн Skyer

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 88
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Цитировать
Готовый, рабочий код для copy/paste не дам, а то ты вообще ножки свесил, JS не учишь, разобраться не пытаешься

Пытаюсь, но не получается. Просто прогу надо бы побыстрее сделать, поэтому я взял средний вариант - пытаюсь понять сам, но если не получается - не тяну с обучением, и спрашиваю:)
Чем меньше букв, тем ёмче слово.

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
Skyer
А х ты мать моя...
я те забыл сказать, что вешать это надо на Onkeyup текстбокса
AS IS...

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
AS IS...

Оффлайн Skyer

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 88
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Макс
Спасибо! Твой вариант дискретно работает. Как адаптировать его под:




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

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


...........




Не работает.
Чем меньше букв, тем ёмче слово.

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
Skyer
посмотри свою прошлую тему, где надо было помечать все поля.
Посмотри, как там была организована работа через массив elements[]
Точно также и здесь сделай
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн Skyer

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 88
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Макс
Как в javascript выглядит: "Если имя поля = newnomer"?
Чем меньше букв, тем ёмче слово.

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
document.form.elements[\'newowner\'].value
у меня в IE так работает. Про другие броузеры не знаю
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн Skyer

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 88
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Макс
Пытаюсь обкатать этот вариант, он работает во всех браузерах, если индекс массива - цифра(\'newnomer\'). Но почему не работает это, где ошибка:






Чем меньше букв, тем ёмче слово.

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28