Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Поле для ввода только цифр
 
 автор: Антоха   (30.10.2007 в 01:53)   письмо автору
 
 

Здраствуйте, подскажите пожалуйста, как при помощи яваскрипта сделать, чтобы в поле(<input type=text>) можно было вводить только цифры.

   
 
 автор: SHAman   (30.10.2007 в 09:58)   письмо автору
 
   для: Антоха   (30.10.2007 в 01:53)
 

Тут не регэксп нужен, а JS самый обычный. Ловишь событие onchange для этого поля, берешь последний символ из значения. Проверяешь его:

if(isNaN(val))
    {послать подальше и ретурн false}

   
 
 автор: SHAman   (30.10.2007 в 10:09)   письмо автору
 
   для: SHAman   (30.10.2007 в 09:58)
 

А нет, все сложнее... Для этого элемента событие onchange наступает при потере фокуса, а не при наборе... Тогда нужно палить нажатие клавиш. Если нажата клавиша, и выделено нужное поле, то тогда проверять. Или как-то так. Ща попробую.

   
 
 автор: provodnik   (30.10.2007 в 10:10)   письмо автору
 
   для: SHAman   (30.10.2007 в 09:58)
 

це из моего скрипта знакомств - поле для ввода возраста:
<div style="margin:7px">
            <style>
        .err{background-color:#FF0000}
        </style>
            <input onkeyup=ff2(this) type=text name=age size="2" maxlength="2" value="">
            <script> ff2=function(t){ t.className=/\D/.test(t.value)?'err':''; if(/\D/.test(t.value)){t.value=t.defaultValue; if(self.ww)clearTimeout(ww); o=t; ww=setTimeout("o.className='';",999); }else t.defaultValue=t.value; }</script>
          </div>

   
 
 автор: SHAman   (30.10.2007 в 11:18)   письмо автору
 
   для: provodnik   (30.10.2007 в 10:10)
 

Что-то очень хитрое... Даже сразу так затрудняюсь сказть что оно у вас делает:)

Вот то, что получилось у меня. Только работает оно пока ток в IE+ФФ(странно, да?). Ща буду дружить с Оперой.

<html>
<head>
    <title>Вводятся только цифры</title>
</head>
<body>
    <form>
        <input type="text" name="digits" value="" id="digits"/>
    </form>
    <div id="console"></div>
    
    
<script language="javascript" type="text/javascript">
var d = document;
var digs = d.getElementById('digits');
var cons = d.getElementById('console');


digs.onkeydown = onlyDigits;


function onlyDigits(e)  {
    //для ие и оперы event, для ФФ - e
    var ev = window.event ? event : e;
    //получаем код клавиши
    var code = ev.keyCode;
    //получаем символ, соответствующий клавише
    var keychar = String.fromCharCode(code);
    //пишем на консоль
    cons.innerHTML += keychar +" "+ code + "<br/>";
    if (code >= 48 && code <= 57 || code==46 || code==8)
        {
        return true;
        } 
    else
        {return false;}
}
</script>
</body>
</html>

   
 
 автор: provodnik   (30.10.2007 в 12:06)   письмо автору
 
   для: SHAman   (30.10.2007 в 11:18)
 

Я ж привел и функцию и пример поля. Можно использовать. Нужно лишь изменить имя поля и вуаля...

   
 
 автор: SHAman   (30.10.2007 в 12:57)   письмо автору
 
   для: provodnik   (30.10.2007 в 12:06)
 

На сколько я вижу от сюда, не разбираясь в коде, там юзается таймер и регулярки. А зачем?

   
 
 автор: Антоха   (30.10.2007 в 21:49)   письмо автору
 
   для: SHAman   (30.10.2007 в 12:57)
 

Спасибо за ответы provodnik и SHaman
Второй вариант мне больше нравится, но т.к. не работает в опере, придется использовать первый от provodnik'a.
SHaman или кто-нибудь другой, если додумаетесь, как сделать , чтобы второй вариант работал еще и в опере, пожалуйства выложите (Просто именно его я и хотел использовать).
Пасибо.

   
 
 автор: SHAman   (31.10.2007 в 11:48)   письмо автору
 
   для: Антоха   (30.10.2007 в 21:49)
 

Если честно, то мне просто лень дальше его ковырять. Погугли. Я видел несколько рабочих примеров, которые работали и в Опере. (правда, не работали в ФФ ;) ). Но все они не сложные, а значит, если разобраться, то можно и с оперой этот скрипт подружить.

   
 
 автор: provodnik   (01.11.2007 в 00:56)   письмо автору
 
   для: SHAman   (31.10.2007 в 11:48)
 

Вот не понимаю я людей.
Чем не устраивает код, к-рый я привёл? Мультибросверность, подсветка, удаление нецифр...
Живой пример работы: http://sprosite.ru/love/ - (возрастные поля в форме поиска в знакомствах)
Есть поговорка - от добра добра не ищут...

   
 
 автор: sim5   (01.11.2007 в 05:15)   письмо автору
 
   для: provodnik   (01.11.2007 в 00:56)
 

Достаточно полю ввода прописать этого:

<input onkeypress="if(event.keyCode<48 || event.keyCode > 57)event.returnValue=false">

   
 
 автор: SHAman   (02.11.2007 в 10:59)   письмо автору
 
   для: provodnik   (01.11.2007 в 00:56)
 

Потому что этот код дерганый и изначально неверный. Проверка происходит по таймауту, а это уже плохо. Лучше просто запрещать вводить нецифры, чем каждый раз их удалять.

>>от добра добра не ищут...
совершенству нет предела!

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования