Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

Как проверить данные поля text на лету? (Xrial)
Author Message
Xrial
Участник форума



Joined: 15 Feb 2005
Posts: 51
Карма: -3
   поощрить/наказать

Location: Томск

PostPosted: Wed Mar 09, 2005 1:03 pm (написано за 1 минуту 20 секунд)
   Post subject: Как проверить данные поля text на лету?
Reply with quote

Нужно чтобы в поле вводилить тьлько цифры, а при попытке ввести другой символ ничего бы не происходило (клавиша какбы аннулировалась)
Back to top
View user's profile Send private message Send e-mail
Rumata
Профессионал



Joined: 17 Aug 2003
Posts: 1850
Карма: 185
   поощрить/наказать


PostPosted: Wed Mar 09, 2005 1:52 pm (спустя 48 минут; написано за 3 минуты 18 секунд)
   Post subject:
Reply with quote

проверять нажатие клавиш и их виртуальные коды
если коды соответствуют цифровым клавишам, то разрешать нажатие, иначе запретить (функция проверки возвращает false)
Back to top
View user's profile Send private message
Xrial
Участник форума



Joined: 15 Feb 2005
Posts: 51
Карма: -3
   поощрить/наказать

Location: Томск

PostPosted: Wed Mar 09, 2005 2:19 pm (спустя 27 минут; написано за 2 минуты 12 секунд)
   Post subject:
Reply with quote

Rumata Это все понятно, а как зделать так чтобы буква не печаталась в самом поле text. Хотелось бы ответа по конкретнее.

Типа <input type=text onKeyDown="обработчик">
Back to top
View user's profile Send private message Send e-mail
Rumata
Профессионал



Joined: 17 Aug 2003
Posts: 1850
Карма: 185
   поощрить/наказать


PostPosted: Wed Mar 09, 2005 4:22 pm (спустя 2 часа 2 минуты; написано за 4 минуты 9 секунд)
   Post subject:
Reply with quote

Code (html): скопировать код в буфер обмена
<input (december.com/html/4/element/input.html) type="text" id="cifers" onkeydown="return validateCifer(this)" /> (december.com/html/4/element/.html)
<script> (december.com/html/4/element/script.html)
...

function validateCifer(text)
{
    if (event.keyCode < (december.com/html/4/element/.html) DOM_VK_0 || event.keyCode > (december.com/html/4/element/.html) DOM_VK_9) return false;
}
</script>
DOM_VK_xxx определяемые вами коды клавиш, но еще надо отлавливать цифровые клавиши на доп.клавиатуре и управляющие клавиши
и это не кроссбраузерно
Back to top
View user's profile Send private message
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 198
   поощрить/наказать

Location: 007 495

PostPosted: Wed Mar 09, 2005 9:34 pm (спустя 5 часов 11 минут; написано за 40 секунд)
   Post subject:
Reply with quote

Rumata
А event кто будет передавать? Почему все так мозиллу не любят ;)
Back to top
View user's profile Send private message Send e-mail
Rumata
Профессионал



Joined: 17 Aug 2003
Posts: 1850
Карма: 185
   поощрить/наказать


PostPosted: Thu Mar 10, 2005 8:31 am (спустя 10 часов 56 минут; написано за 18 секунд)
   Post subject:
Reply with quote

yUAC, я заметил, что
Quote:
не кроссбраузерно
Back to top
View user's profile Send private message
SNiP
Участник форума



Joined: 06 Mar 2005
Posts: 58
Карма: 5
   поощрить/наказать


PostPosted: Sat Mar 12, 2005 3:40 am (спустя 1 день 19 часов 9 минут; написано за 2 минуты 34 секунды)
   Post subject:
Reply with quote

и наверное стоит добавить обработчик на onchange (вроде так), который бы проверял значение на наличие недопустимых символов, дабы обрабатывать копи/паст
Back to top
View user's profile Send private message
Лев Ануфриев
Заглянувший



Joined: 14 Mar 2005
Posts: 7
Карма: 1
   поощрить/наказать


PostPosted: Mon Mar 14, 2005 7:13 pm (спустя 2 дня 15 часов 33 минуты; написано за 7 минут 47 секунд)
   Post subject:
Reply with quote

Я написал следующее:
эту функцию ставите и для onkeydown и для onchange - на случй вставки из клипборда
obj - Ваше поле ввода

function CheckDigits(obj){
  var s = obj.value
  var i=0
  var digits = '1234567890' // возможные цифры
  var c=''
  while (i<s.length){ // прогулка по всей строке
    c=s.charAt(i)
    <?if ($Unit >12) {print "digits+='.'\n";}?> // тут я добавлял дробную точку, если надо
         // то есть, если штуки или комплекты, то дроби нет, а если граммы или кв.м, то дробь возм...
    if (digits.indexOf(c)==-1) {
      if (c=='.'){
        s=s.substr(0,i)
      }
      
      s=s.substr(0,i)+s.substr(i+1)
    }else{
      if (c==='0' && i===0){ //если первый символ 0 - его удаляем
        s=s.substr(1)
        continue
      }

      if (c=='.'){ //если достигнут символ точки и он разрешён, обрезаем до 3 знаков после точки
        s=s.substr(0,i+4)
      }
     i++; }
    
  }
  if(s==''){ //если пустая строка - автоматически вставляется "1"
    s='1'
  }
  obj.value=s;
  
}
Back to top
View user's profile Send private message
Евгений Галашин
Модератор



Joined: 29 Dec 2003
Posts: 1861
Карма: 32
   поощрить/наказать


PostPosted: Mon Mar 14, 2005 7:27 pm (спустя 13 минут; написано за 59 секунд)
   Post subject:
Reply with quote

Лев Ануфриев, пожалуйста, пользуйтесь тегами вставки кода (select внизу формы ответа), например [ js ][ /js ] (уберите пробелы.
Back to top
View user's profile Send private message
Лев Ануфриев
Заглянувший



Joined: 14 Mar 2005
Posts: 7
Карма: 1
   поощрить/наказать


PostPosted: Mon Mar 14, 2005 8:25 pm (спустя 58 минут; написано за 48 секунд)
   Post subject:
Reply with quote

Я понял - постараюсь не нарушать.
Извиняюсь за оплошность.

Лев.
Back to top
View user's profile Send private message
Лев Ануфриев
Заглянувший



Joined: 14 Mar 2005
Posts: 7
Карма: 1
   поощрить/наказать


PostPosted: Mon Mar 14, 2005 8:38 pm (спустя 12 минут; написано за 4 минуты 54 секунды)
   Post subject:
Reply with quote

Да, и ещё по теме - делать так, чтобы не вводились нецифровые знаки - дело, порой неблагодарное - пользователь нервничает - кнопку жмёт - а ничего не появляется...

По моему опыту лучше поставить onblur. Он пойдёт и для ввода с клавиатуры и для постинга из клипборда.
Щёлкаешь вне поля или жмёшь на tab - результат на лицо. А перед последней закрывающей } вызываете функцию, использующую результат - и всё работает отлично и наглядно.

Лев
Back to top
View user's profile Send private message
Navigator
Участник форума



Joined: 27 Nov 2004
Posts: 221
Карма: -12
   поощрить/наказать

Location: Павловский Посад

PostPosted: Sun Mar 20, 2005 1:01 pm (спустя 5 дней 16 часов 23 минуты; написано за 45 секунд)
   Post subject:
Reply with quote

Я обычно проверяю либо при отправке (как в phpMyAdmin), а можно прямо "на лету" выводить alert ;)
Back to top
View user's profile Send private message
Xrial
Участник форума



Joined: 15 Feb 2005
Posts: 51
Карма: -3
   поощрить/наказать

Location: Томск

PostPosted: Sun Mar 20, 2005 4:55 pm (спустя 3 часа 53 минуты; написано за 1 минуту 1 секунду)
   Post subject:
Reply with quote

По моему лучше проверять на лету js скриптом, и еще при отправке на случай если кто-нибуть введет данные в адресную строку.
Back to top
View user's profile Send private message Send e-mail
Navigator
Участник форума



Joined: 27 Nov 2004
Posts: 221
Карма: -12
   поощрить/наказать

Location: Павловский Посад

PostPosted: Mon Mar 21, 2005 5:27 pm (спустя 1 день 31 минуту; написано за 21 секунду)
   Post subject:
Reply with quote

Xrial wrote:
при отправке на случай если кто-нибуть введет данные в адресную строку
адресная строка JavaScript'у неподвластна...
Back to top
View user's profile Send private message
Xrial
Участник форума



Joined: 15 Feb 2005
Posts: 51
Карма: -3
   поощрить/наказать

Location: Томск

PostPosted: Thu Mar 24, 2005 8:10 am (спустя 2 дня 14 часов 42 минуты; написано за 47 секунд)
   Post subject:
Reply with quote

Я имел ввиду проваерить данные JS скриптом перед отправкой, и еще php скриптом после.
Back to top
View user's profile Send private message Send e-mail
Display posts from previous:   
Post new topic   Reply to topic All times are GMT + 3 Hours
Page 1 of 1    Email to a Friend.
You cannot post new topics in this forum. You cannot reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You cannot attach files in this forum. You can download files in this forum.
XML