Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Корректность ввода в Opera 
:(
    Опции темы
s0lman
Дата 24.12.2007, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и лохматый
**


Профиль
Группа: Участник
Сообщений: 637
Регистрация: 1.11.2007
Где: Ukraine

Репутация: нет
Всего: 29



Всем привет. Есть проблемка.
Чтобы не дать возможности пользователю ввести текст в поле для ввода цифр, вешаю на событие onkeypress простенький обработчик
if ((window.event.keyCode<"48")||(window.event.keyCode>"57"))window.event.keyCode="0";
Все отлично, но почему-то опера его игнорирует. То же самое происходит, когда проверяю на ввод латинского текста, ходя код символа определяет правильно. 
Подскажите плз, что здесь нужно сделать.


--------------------
Когда я уже выучусь на волшебника? :(
PM   Вверх
InfMag
Дата 24.12.2007, 19:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 21.11.2004

Репутация: 2
Всего: 4



Я вот кокраз сегодня работал над этой проблемой, использую таймер и пару функций:
Код

<script type="text/javascript" language="javascript">

function onlyInt(val)
{
    var result = '';
    for (var i=0; i<val.length; i++)
    {
        switch (val.substring(i,i+1))
        {
            case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9':
                result += val.substring(i,i+1);
            break;
        }
    }
    return result;
}

function count_change()
{
    if (prodcount.value != onlyInt(prodcount.value)) prodcount.value = onlyInt(prodcount.value);
    if (prodcount.value == '') prodcount.value = 1;
    if (parseInt(prodcount.value) < 1) prodcount.value = 1;
    if (parseInt(prodcount.value) > 9999) prodcount.value = 9999;
}

function start_count_changer()
{
    count_change();
    setTimeout("start_count_changer()", 1);
}

</script>

Код

<input type="text" name="prodcount" id="prodcount" value="1">
<script type="text/javascript" language="javascript">start_count_changer();</script>

Вот попробуй поклацать, может получешь того чего хочешь smile
PM   Вверх
Ghirik
Дата 24.12.2007, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 919
Регистрация: 26.3.2007

Репутация: 13
Всего: 20



Я имею некоторые сомнения, но Вы не пробовали использовать атрибут format тэга input.
Я не пробовал  smile 


--------------------
Отдадим всё клиенту, пускай его машина мучается...

PM MAIL   Вверх
s0lman
Дата 24.12.2007, 20:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и лохматый
**


Профиль
Группа: Участник
Сообщений: 637
Регистрация: 1.11.2007
Где: Ukraine

Репутация: нет
Всего: 29



Что-то не догоню... все время получаю ошибку при вызове функции...


--------------------
Когда я уже выучусь на волшебника? :(
PM   Вверх
Ghirik
Дата 24.12.2007, 21:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 919
Регистрация: 26.3.2007

Репутация: 13
Всего: 20



Код

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Title block</title>
<script type="text/javascript">
<!--
function onlyInt(val) {
    var result = '';
    for (var i=0; i<val.length; i++)
    {
        switch (val.substring(i,i+1))
        {
            case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9':
                result += val.substring(i,i+1);
            break;
        }
    }
    return result;
}

function count_change() {
    var prodcount = document.getElementById('prodcount');
    if (prodcount.value != onlyInt(prodcount.value)) prodcount.value = onlyInt(prodcount.value);
    if (prodcount.value == '') prodcount.value = 1;
    if (parseInt(prodcount.value) < 1) prodcount.value = 1;
    if (parseInt(prodcount.value) > 9999) prodcount.value = 9999;
}

function start_count_changer()
{
    count_change();
    setTimeout("start_count_changer()", 1);
}

//-->
</script>
</head>
<body>
<input type="text" name="prodcount" id="prodcount" value="1">
<script type="text/javascript" language="javascript">start_count_changer();</script>
</body>
</html>


Так работает

Это сообщение отредактировал(а) Ghirik - 24.12.2007, 21:04


--------------------
Отдадим всё клиенту, пускай его машина мучается...

PM MAIL   Вверх
s0lman
Дата 24.12.2007, 22:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и лохматый
**


Профиль
Группа: Участник
Сообщений: 637
Регистрация: 1.11.2007
Где: Ukraine

Репутация: нет
Всего: 29



Сенкс


--------------------
Когда я уже выучусь на волшебника? :(
PM   Вверх
GZep
Дата 24.12.2007, 23:33 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


участник Винграда
***


Профиль
Группа: Завсегдатай
Сообщений: 1528
Регистрация: 7.7.2006
Где: Москва

Репутация: 2
Всего: 32



Зачем извращаться? Ghirik предложил отличный вариант: быстрый и при нем пользователю раузер скажет, что низя вводить ничего кроме цифр...


--------------------
user posted imageuser posted image
PM MAIL WWW ICQ Skype GTalk   Вверх
s0lman
Дата 28.12.2007, 00:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и лохматый
**


Профиль
Группа: Участник
Сообщений: 637
Регистрация: 1.11.2007
Где: Ukraine

Репутация: нет
Всего: 29



Да, но я в таком случае никак не проверю, кириллицу или латинницу ползователь вводит в текстовое поле.


--------------------
Когда я уже выучусь на волшебника? :(
PM   Вверх
SelenIT
Дата 28.12.2007, 00:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 49
Всего: 401



window.event нигде кроме IE не доступен в ф-ции-обработчике, в этом все дело. В "стандартных" браузерах нужно явно передавать событие параметром. Вот пример, в котором событие оказывается доступно для всех браузеров.


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1266 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.