Здравствуйте, Аноним, Вы писали:
А>нужны валидаторы позволяющие ограничить ввод неверных символов в тектсбокс.
А>например только цифры, только буквы, и т.д....
А>если кто видел, дайте линк
А самому написать религия не позволяет?
Ничего ведь сложного нету — пара регэкспов и дело сделано. Пример на 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);
}
;?>
Здравствуйте, ЖуК, Вы писали:
ЖуК>Здравствуйте, Аноним, Вы писали:
А>>нужны валидаторы позволяющие ограничить ввод неверных символов в тектсбокс.
А>>например только цифры, только буквы, и т.д....
А>>если кто видел, дайте линк
ЖуК>А самому написать религия не позволяет? ЖуК>Ничего ведь сложного нету — пара регэкспов и дело сделано. Пример на JavaScript:
ЖуК>[java] ЖуК><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
ну, такое я могу....
=)
но хотелось бы немоного не так, мне хочется чтобы валидатор висел на onkeydown и пресекал не нужный ввод. плюс более универсально, я не знаю сколько текстбоксов у меня будет, они генерируются динамически.
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, ЖуК, Вы писали:
А>ну, такое я могу.... А>=) А>но хотелось бы немоного не так, мне хочется чтобы валидатор висел на 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>
Здравствуйте, ЖуК, Вы писали:
ЖуК>Здравствуйте, Аноним, Вы писали:
А>>Здравствуйте, ЖуК, Вы писали:
А>>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>
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, ЖуК, Вы писали:
А>огромное спасибо, почти то что что надо. А>а еще не подскажите как реализуют маскированый ввод? например даты... или дробного числа...
Здравствуйте, ЖуК, Вы писали:
ЖуК>Здравствуйте, Аноним, Вы писали:
А>>Здравствуйте, ЖуК, Вы писали:
А>>огромное спасибо, почти то что что надо. А>>а еще не подскажите как реализуют маскированый ввод? например даты... или дробного числа...
ЖуК>http://www.magicofphoto.com/web/ посмотри здесь, нам вроде я когда-то что-то такое видел
ЖуК>А если там нет того, что тебе надо, ну... тогда опиши поподробней чего ты хочешь, понапрягаемся
глянул, там немного не то, для даты например там просто показывает статус соответсвует формату даты или нет.
я хочу следущее, есть поле. надо в него ввести дату.
хотца обрезать ввод букв, и к тому же запретить вводить 3 цифры подряд если это не после второго /, запретить вводить 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.yyyyvar 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 будет правильной Но с этим уже сам заморачивайся — я под конец дня уже разленился...
А>будешь в киеве, с меня
Если бы ты потрудился заглянуть в мой профайл, то, скорее всего, заметил бы, что я из Киева. Так что смотри — слово не воробей... Жду пива
Здравствуйте, ЖуК, Вы писали:
ЖуК>З.Ы. Ну и оценок же вы мне наставили, ребятушки... я аж офигел Это наверное в честь дня Ангела Всем спасибо.
Предлагаю внести "необязательное" правило: 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. Представить себе не могу, что было бы с Кодт-ом, если бы ему проставили за все его полученные балы .
Здравствуйте, 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. Представить себе не могу, что было бы с Кодт-ом, если бы ему проставили за все его полученные балы .
Ну че — нашел бы покупателя и поставлял бы ему пиво... на Мерсюк бы уж скопил, наверное...
Здравствуйте, ЖуК, Вы писали:
ЖуК>Токма я не понял — 1литр за бал? Вариант....
Именно 1 пивно-литровый за балл.
U>>P.S. Сие правило предлагаю наименовать "Правило Жука" .
ЖуК>Действительно сегодня день ангела Михаила
40 дней... до Нового Года.