Sript валидаторы
От: Аноним  
Дата: 21.11.03 07:21
Оценка:
нужны валидаторы позволяющие ограничить ввод неверных символов в тектсбокс.

например только цифры, только буквы, и т.д....


если кто видел, дайте линк
Re: Sript валидаторы
От: ЖуК Украина http://smart-ip.net/
Дата: 21.11.03 08:34
Оценка: 16 (1)
Здравствуйте, Аноним, Вы писали:

А>нужны валидаторы позволяющие ограничить ввод неверных символов в тектсбокс.


А>например только цифры, только буквы, и т.д....



А>если кто видел, дайте линк


А самому написать религия не позволяет?
Ничего ведь сложного нету — пара регэкспов и дело сделано. Пример на JavaScript:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
    <title>Test</title>
</head>

<body>
<form onsubmit="return check_data()">
Буквы: <input type="text" name="words"><br>
Цифры: <input type="text" name="digits"><br>
<input type="Submit" value="OK">
</form>
<script>
// Только буквы:
String.prototype.is_words = function() {
    var regex = /^[a-zà-ÿ]+$/i;
    return regex.test( this);
}
// Только цифры
String.prototype.is_digits = function() {
    var regex = /^[0-9]+$/;
    return regex.test( this);
}
function check_data() {
    var alertmsg = '';
    if (!document.forms[0].words.value.is_words()) {
        alertmsg += 'В поле "Буквы" можно вводить только буквы русского и латинского алфавитов!';
    }
    if (!document.forms[0].digits.value.is_digits()) {
        alertmsg += ((alertmsg != '') ? "\n" :'')+ 'В поле "Цифры" можно вводить только цифры!';
    }
    if (alertmsg != '') {
        alert( alertmsg);
        return false;
    }
    return true;
}
</script>
</body>
</html>



Пример на PHP:


<?php
$w = $_GET['words'];
$d = $_GET['digits'];

$out = '';
if (!preg_match( '/^[a-zа-я]+$/i', $w)) {
    $out .= 'В поле "Буквы" можно вводить только буквы русского и латинского алфавитов!';
}
if (!preg_match( '/^[0-9]+$/i', $d)) {
    $out .= ($out != '' ? "<BR />\n" : '')'В поле "Цифры" можно вводить только цифры!';
}
if ($out != '') {
    die( $out);
}
;?>
_____________________________________________________________
"Голова — кость, поэтому болеть не может..." © Неизвестный автор
Re[2]: Sript валидаторы
От: ЖуК Украина http://smart-ip.net/
Дата: 21.11.03 08:36
Оценка:
Здравствуйте, ЖуК, Вы писали:

ЖуК>Здравствуйте, Аноним, Вы писали:


А>>нужны валидаторы позволяющие ограничить ввод неверных символов в тектсбокс.


А>>например только цифры, только буквы, и т.д....



А>>если кто видел, дайте линк


ЖуК>А самому написать религия не позволяет?

ЖуК>Ничего ведь сложного нету — пара регэкспов и дело сделано. Пример на JavaScript:

ЖуК>[java]

ЖуК><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>>
<head>>
ЖуК> <title>Test</title>
ЖуК></head>

<body>>
ЖуК><form onsubmit="return check_data()">
ЖуК>Буквы: <input type="text" name="words"><br>
ЖуК>Цифры: <input type="text" name="digits"><br>
ЖуК><input type="Submit" value="OK">
ЖуК></form>
ЖуК><script>
ЖуК>// Только буквы:
ЖуК>String.prototype.is_words = function() {
ЖуК> var regex = /^[a-zà-ÿ]+$/i;

Сорри за очепятку. Надо так:
var regex = /^[a-zа-я]+$/i;
_____________________________________________________________
"Голова — кость, поэтому болеть не может..." © Неизвестный автор
Re[3]: Sript валидаторы
От: Аноним  
Дата: 21.11.03 08:43
Оценка:
Здравствуйте, ЖуК, Вы писали:

ну, такое я могу....
=)
но хотелось бы немоного не так, мне хочется чтобы валидатор висел на onkeydown и пресекал не нужный ввод. плюс более универсально, я не знаю сколько текстбоксов у меня будет, они генерируются динамически.
Re[4]: Sript валидаторы
От: ЖуК Украина http://smart-ip.net/
Дата: 21.11.03 09:19
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, ЖуК, Вы писали:


А>ну, такое я могу....

А>=)
А>но хотелось бы немоного не так, мне хочется чтобы валидатор висел на onkeydown и пресекал не нужный ввод. плюс более универсально, я не знаю сколько текстбоксов у меня будет, они генерируются динамически.

Ну и в чем проблемма?

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
    <title>Test</title>
</head>

<body>
<form onsubmit="return check_data()">
Буквы: <input type="text" name="words"><br>
Цифры: <input type="text" name="digits"><br>
<input type="Submit" value="OK">
</form>
<script>
String.prototype.is_valid = function() {
    var regex = /^[-a-zа-я0-9_]+$/i;
    return regex.test( this);
}
for (var i = 0; i < document.forms.length; i++) {
    for (var j = 0; j < document.forms[i].elements.length; j++) {
        if (document.forms[i].elements[j].type == 'text') {
            document.forms[i].elements[j].onkeyup = function() {
                if (!this.value.is_valid()) {
                    this.value = this.value.substring(0, this.value.length - 1);
                }
            }
        }
    }
}
</script>
</body>
</html>
_____________________________________________________________
"Голова — кость, поэтому болеть не может..." © Неизвестный автор
Re[5]: Sript валидаторы
От: Аноним  
Дата: 21.11.03 09:26
Оценка:
Здравствуйте, ЖуК, Вы писали:

1. paste не проканает....

ЖуК>Ну и в чем проблемма?


ЖуК>
ЖуК><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>>
<head>>
ЖуК>    <title>Test</title>
ЖуК></head>

<body>>
ЖуК><form onsubmit="return check_data()">
ЖуК>Буквы: <input type="text" name="words"><br>
ЖуК>Цифры: <input type="text" name="digits"><br>
ЖуК><input type="Submit" value="OK">
ЖуК></form>
ЖуК><script>
ЖуК>String.prototype.is_valid = function() {
ЖуК>    var regex = /^[-a-zа-я0-9_]+$/i;
ЖуК>    return regex.test( this);
ЖуК>}
ЖуК>for (var i = 0; i < document.forms.length; i++) {
ЖуК>    for (var j = 0; j < document.forms[i].elements.length; j++) {
ЖуК>        if (document.forms[i].elements[j].type == 'text') {
ЖуК>            document.forms[i].elements[j].onkeyup = function() {
ЖуК>                if (!this.value.is_valid()) {
ЖуК>                    this.value = this.value.substring(0, this.value.length - 1);
ЖуК>                }
ЖуК>            }
ЖуК>        }
ЖуК>    }
ЖуК>}
ЖуК></script>
ЖуК></body>
ЖуК></html>
ЖуК>
Re[6]: Sript валидаторы
От: ЖуК Украина http://smart-ip.net/
Дата: 21.11.03 09:30
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, ЖуК, Вы писали:


А>1. paste не проканает....


Слушай, любезный, ты хочешь, что бы я сделал за тебя всю твою работу?
Я бы на твоем месте сказал "Спасибо" и доделал все что надо дальше сам...

Тем более, что ты сам сказял — я МОГУ. Вот и делай.
_____________________________________________________________
"Голова — кость, поэтому болеть не может..." © Неизвестный автор
Re[7]: Sript валидаторы
От: ЖуК Украина http://smart-ip.net/
Дата: 21.11.03 09:52
Оценка: 124 (7) :)
Здравствуйте, ЖуК, Вы писали:

ЖуК>Здравствуйте, Аноним, Вы писали:


А>>Здравствуйте, ЖуК, Вы писали:


А>>1. paste не проканает....


ЖуК>Слушай, любезный, ты хочешь, что бы я сделал за тебя всю твою работу?

ЖуК>Я бы на твоем месте сказал "Спасибо" и доделал все что надо дальше сам...

ЖуК>Тем более, что ты сам сказял — я МОГУ. Вот и делай.


Хотя с другой стороны самому интересно

Ну я бы сделал так


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
    <title>Test</title>
</head>

<body>
<form>
Буквы: <input type="text" name="words"><br>
Цифры: <input type="text" name="digits"><br>
<input type="Submit" value="OK">
</form>
<script>
String.prototype.is_valid = function() {
    var regex = /^[-a-zа-я0-9_]+$/i;
    return regex.test( this);
}
for (var i = 0; i < document.forms.length; i++) {
    for (var j = 0; j < document.forms[i].elements.length; j++) {
        if (document.forms[i].elements[j].type == 'text') {
            document.forms[i].elements[j].onblur = function() {
                if (!this.value.is_valid()) {
                    this.value = '';
                }
            }
            document.forms[i].elements[j].onkeyup = function() {
                if ((event.ctrlKey && event.keyCode == 86) || (event.shiftKey && event.keyCode == 45)) {
                    if (!this.value.is_valid()) {
                        this.value = '';
                    }
                }
                if (!this.value.is_valid()) {
                    this.value = this.value.substring(0, this.value.length - 1);
                }
            }
        }
    }
    document.forms[i].onsubmit = function() {
        for (var k = 0; k < this.elements.length; k++) {
            if (this.elements[k].type == 'text' && !this.elements[k].value.is_valid()) {
                return false;
            }
        }
        return true;
    }
}
</script>
</body>
</html>



Хотя хрен его знает че тебе надо...
_____________________________________________________________
"Голова — кость, поэтому болеть не может..." © Неизвестный автор
Re[8]: Sript валидаторы
От: mogadanez Чехия  
Дата: 21.11.03 10:15
Оценка:
Здравствуйте, ЖуК, Вы писали:

ЖуК>Хотя с другой стороны самому интересно


Браво!
... << RSDN@Home 1.1 beta 2 >>
Re[8]: Sript валидаторы
От: Аноним  
Дата: 21.11.03 11:08
Оценка:
Здравствуйте, ЖуК, Вы писали:

огромное спасибо, почти то что что надо.
а еще не подскажите как реализуют маскированый ввод? например даты... или дробного числа...
Re[9]: Sript валидаторы
От: ЖуК Украина http://smart-ip.net/
Дата: 21.11.03 11:38
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, ЖуК, Вы писали:


А>огромное спасибо, почти то что что надо.

А>а еще не подскажите как реализуют маскированый ввод? например даты... или дробного числа...

http://www.magicofphoto.com/web/ посмотри здесь, нам вроде я когда-то что-то такое видел

А если там нет того, что тебе надо, ну... тогда опиши поподробней чего ты хочешь, понапрягаемся
_____________________________________________________________
"Голова — кость, поэтому болеть не может..." © Неизвестный автор
Re[10]: Sript валидаторы
От: Аноним  
Дата: 21.11.03 12:24
Оценка:
Здравствуйте, ЖуК, Вы писали:

ЖуК>Здравствуйте, Аноним, Вы писали:


А>>Здравствуйте, ЖуК, Вы писали:


А>>огромное спасибо, почти то что что надо.

А>>а еще не подскажите как реализуют маскированый ввод? например даты... или дробного числа...

ЖуК>http://www.magicofphoto.com/web/ посмотри здесь, нам вроде я когда-то что-то такое видел


ЖуК>А если там нет того, что тебе надо, ну... тогда опиши поподробней чего ты хочешь, понапрягаемся


глянул, там немного не то, для даты например там просто показывает статус соответсвует формату даты или нет.

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



будешь в киеве, с меня
Re[11]: Sript валидаторы
От: ЖуК Украина http://smart-ip.net/
Дата: 21.11.03 15:00
Оценка: 17 (2)
Здравствуйте, Аноним, Вы писали:

А>глянул, там немного не то, для даты например там просто показывает статус соответсвует формату даты или нет.


А>я хочу следущее, есть поле. надо в него ввести дату.

А>хотца обрезать ввод букв, и к тому же запретить вводить 3 цифры подряд если это не после второго /, запретить вводить 2 слеша подряд....

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
    <title>Date Mask Example</title>
</head>

<body>
Input Date: <input type="text" id="date" name="date">
<script>
// Маска для даты в формате dd.mm.yyyy
var conf = new Object();

var validKeys = new Array();
for (i = 48; i < 58; i++)  validKeys[i-48] = i;
for (i = 96; i < 106; i++) validKeys[i-96+10] = i;

document.getElementById( 'date').onkeypress = function() {
    // все данные уже введены! Завершаем выполнение события
    if (this.value.length >= 10) {
        this.value = this.value.substring( 0, 10);
        event.returnValue = false;
        event.cancelBubble = true;
        return false;
    }
    var flag = false;
    // проверяем, была ли нажата "правильная" клавиша
    for (i = 0; i < validKeys.length; i++) {
        if (event.keyCode == validKeys[i]) {
            flag = true;
            break;
        }
    }
    if (!flag && event.keyCode == 8) {
        return;
    } else if(!flag && event.keyCode == 47 && (this.value.length == 2 || this.value.length == 5)) {
        if (this.value.substring( this.value.length - 1, this.value.length) != '/') {
            return;
        }
    } else {
        if (this.value.length == 2 || this.value.length == 5) {
            this.value = this.value + '/';
        }
    }
    // Запрещаем вводить что-либо, кроме цифр:
    if (!flag) {
        event.returnValue = false;
        event.cancelBubble = true;
        return false;
    }
}
</script>


Пример работы здесь.
Исходник предоставлен в теле сообщения, однако его можно посмотреть и здесь

Работает только под ИЕ. Не универсально. НО ПРАВИЛЬНО! В соответствии с предоставленными требованиями . Слэши в поле можно вообще не вводить — они сами расставляются Все чего не хватает либо было предложено в постингах, что выше, либо сам доработаешь Ну и естественно, нет проверки на правильность даты, т.е. дата вида 44/99/5631 будет правильной Но с этим уже сам заморачивайся — я под конец дня уже разленился...

А>будешь в киеве, с меня


Если бы ты потрудился заглянуть в мой профайл, то, скорее всего, заметил бы, что я из Киева. Так что смотри — слово не воробей... Жду пива
_____________________________________________________________
"Голова — кость, поэтому болеть не может..." © Неизвестный автор
Re[12]: Sript валидаторы
От: ЖуК Украина http://smart-ip.net/
Дата: 21.11.03 15:09
Оценка: 2 (1)
Здравствуйте, ЖуК, Вы писали:

Ну конечно, в коде есть кое-что лишнее, например эта строчка:
var conf = new Object();


Иди вот здесь (выделено жирным)
    } else if(!flag && event.keyCode == 47 && (this.value.length == 2 || this.value.length == 5)) {
        if (this.value.substring( this.value.length - 1, this.value.length) != '/') {            return;
    }


Так что лучше смотрите сырцы, которые отдаются по ссылке которая предоставлена в предыдущем посте...
За сим кланяюсь...

З.Ы. Ну и оценок же вы мне наставили, ребятушки... я аж офигел Это наверное в честь дня Ангела Всем спасибо.
_____________________________________________________________
"Голова — кость, поэтому болеть не может..." © Неизвестный автор
Re[13]: Sript валидаторы
От: uzzy Россия  
Дата: 21.11.03 16:38
Оценка:
Здравствуйте, ЖуК, Вы писали:

ЖуК>З.Ы. Ну и оценок же вы мне наставили, ребятушки... я аж офигел Это наверное в честь дня Ангела Всем спасибо.

Предлагаю внести "необязательное" правило:
1. Если кто-то добровольно решил ставить пиво, пусть дальше не отмазывается.
2. Исходя из п.1, отмазки типа "я Аноним", "жаль, что ты живешь не в Москве" не канают. Так сказать: сказано, должно быть сделано. Доставка в любую точку мира за счет проставляющегося.
3. Единица измерения проставляемого — 1 литр пива.
4. Цена 1 литра пива пусть будет равна $1 (USA), либо в рублях по курсу ММВБ на день проставки.
5. Объем проставляемого измеряется в сумме баллов за ответы по теме для каждого человека.
6. Срок (отправки) проставки: 1 неделя с момента получения балла.

Примечания:
A. п.5. Если Вася задал вопрос, и ему отвечали Коля и Петя. В результате ответов Коля получил 15 баллов, а Петя 30 баллов. То проставляющий (Вася, предварительно обещавший ) проставляет Коле 15 пивно-литровых эквивалентов, а Пете 30.
B. к п.6. соласно примечанию A. Если Пете через месяц поставили еще 10 баллов, то проставляющий обязан доставить 10 пивно-литровых эквивалентов.
С. в случае проставления в удаленные точки Земли от проставляющего, можно произвести денежный перевод (или другая форма денежной оплаты), согласно п.4.

P.S. Сие правило предлагаю наименовать "Правило Жука" .
P.P.S. Представить себе не могу, что было бы с Кодт-ом, если бы ему проставили за все его полученные балы .
RSDN@Home 1.1.0 stable
Re[14]: Sript валидаторы
От: ЖуК Украина http://smart-ip.net/
Дата: 21.11.03 16:57
Оценка:
Здравствуйте, uzzy, Вы писали:

U>Здравствуйте, ЖуК, Вы писали:


U>Предлагаю внести "необязательное" правило:

U>1. Если кто-то добровольно решил ставить пиво, пусть дальше не отмазывается.
U>2. Исходя из п.1, отмазки типа "я Аноним", "жаль, что ты живешь не в Москве" не канают. Так сказать: сказано, должно быть сделано. Доставка в любую точку мира за счет проставляющегося.
U>3. Единица измерения проставляемого — 1 литр пива.
U>4. Цена 1 литра пива пусть будет равна $1 (USA), либо в рублях по курсу ММВБ на день проставки.

или в гривнах по курсу НБУ... Можно и монгольскими тугриками конечно, но лучше, наверное, в евро...

U>5. Объем проставляемого измеряется в сумме баллов за ответы по теме для каждого человека.

U>6. Срок (отправки) проставки: 1 неделя с момента получения балла.

7. Все это надо написать большими буквами на главной странице РСДНА!!!

U>Примечания:

U>A. п.5. Если Вася задал вопрос, и ему отвечали Коля и Петя. В результате ответов Коля получил 15 баллов, а Петя 30 баллов. То проставляющий (Вася, предварительно обещавший ) проставляет Коле 15 пивно-литровых эквивалентов, а Пете 30.

Токма я не понял — 1литр за бал? Вариант....

U>B. к п.6. соласно примечанию A. Если Пете через месяц поставили еще 10 баллов, то проставляющий обязан доставить 10 пивно-литровых эквивалентов.


Понял! Еще нужен президент клуба (партии) "Код за пиво!", который будет вести работы по отслеживанию и наказанию нарушителей. Предлагаю на пост президента кандидатуру uzzy! А все вышеизложенное назвать "уставом" и строго его придерживаться

U>С. в случае проставления в удаленные точки Земли от проставляющего, можно произвести денежный перевод (или другая форма денежной оплаты), согласно п.4.


Расчетный счет №4569755424597 (Примечание: не торопитесь высылать бабки — номер счета изменится в скором будущем)

U>P.S. Сие правило предлагаю наименовать "Правило Жука" .


Действительно сегодня день ангела Михаила

U>P.P.S. Представить себе не могу, что было бы с Кодт-ом, если бы ему проставили за все его полученные балы .


Ну че — нашел бы покупателя и поставлял бы ему пиво... на Мерсюк бы уж скопил, наверное...
_____________________________________________________________
"Голова — кость, поэтому болеть не может..." © Неизвестный автор
Re[15]: Sript валидаторы
От: uzzy Россия  
Дата: 21.11.03 17:14
Оценка:
Здравствуйте, ЖуК, Вы писали:

ЖуК>Токма я не понял — 1литр за бал? Вариант....

Именно 1 пивно-литровый за балл.

U>>P.S. Сие правило предлагаю наименовать "Правило Жука" .


ЖуК>Действительно сегодня день ангела Михаила

40 дней... до Нового Года.
RSDN@Home 1.1.0 stable
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.