|
|
|
| У меня с Яваскриптом туговато, поэтому прошу вашей помощи, форумчане.
Нужно сделать проверку яваскриптом такого вида:
Есть текстовое поле и кнопка.
При нажатии кнопки мышкой (лино Энтером), идёт проверка на то, что в текстовом поле.
Разрешаются только цифры от 1 до 9, их должно быть 4, ни больше, ни меньше, а также они не могут повторяться (например, 1234-можно, 1225-нельзя).
Напишите код, пожалуйста! | |
|
|
|
|
|
|
|
для: Freddie_X
(27.02.2008 в 22:10)
| |
<form name="myForm" onsubmit="return myFunc ()">
<input type="text" name="myText">
<input type="submit" value="Отправить">
</form>
<script>
function myFunc ()
{
function r () {alert ('Error'); document.forms.myForm.myText.select (); return false}
var t = document.forms.myForm.myText.value;
if (t.length != 4) return r (); else
if (t.replace (/\d/g, '').length) return r (); else
for (var a = '', s = t.split (''), j = 0; j < 4; j++)
if (a.indexOf (s [j]) < 0) a += '' + s [j];
if (a.length != 4) return r (); else
return true;
}
</script>
|
1. Если сообщений об ошибке не надо, то удалите первую строку function r () {alert ('Error'); document.forms.myForm.myText.select (); return false} вовсе, и все три return r (); замените на return false;
2. Если, наоборот, сообщения об ошибках хотите сделать более конкретными, тогда в первой строке function r () {alert ('Error'); ... замените на function r (x) {alert (x); ..., и во все три return r (); добавьте текст типа ошибки. Вот так (по очереди):
return r ('Недопустимая длина');
return r ('Недопустимые символы');
return r ('Недопустимые повторы'); | |
|
|
|
|
|
|
|
для: CNTv2.0
(28.02.2008 в 01:13)
| | Спасибо, работает, но...
Но единственное, скрипт не запрещает цифры 0.
А можно только 1-9. Нужно подправить немного.
Ещё, не могли бы вы объяснить строку if (t.replace (/\d/g, '').length), что в ней что значит. :) | |
|
|
|
|
|
|
|
для: Freddie_X
(28.02.2008 в 16:25)
| | Пожалуйста! Ответьте кто-нибудь!!
Я понял, что
удаляет цифры все.
А вот как это работает в конструкции
if (t.replace (/\d/g, '').length)
|
?? | |
|
|
|
|
|
|
|
для: Freddie_X
(29.02.2008 в 15:23)
| | Подправляю и комментирую:
<script>
//определяем глобальную функцию "Проверка поля формы" myFunc ()
function myFunc ()
{
//определяем локальную функцию "Ошибка" r (), которая сообщит о ней юзеру и не допустит сабмит формы
function r () {alert ('Error'); document.forms.myForm.myText.select (); return false}
//вводим локальную переменную t, которая содержит строку из поля ввода
var t = document.forms.myForm.myText.value;
//если длина строки (количество символов) не равно 4-м, то переход к функции "Ошибка"
if (t.length != 4) return r (); else
//если длина строки после удаления из неё всех цифр отлична от нуля, то переход к функции "Ошибка"
if (t.replace (/\d/g, '').length) return r (); else
//разбиваем строку на отдельные символы(уже только цифры) +
//и из этих символов составляем новую строку, +
//причём при составлении следим, чтобы каждый вновь добавляемый символ +
//не был включён в неё ранее и не был равен нулю
for (var a = '', s = t.split (''), j = 0; j < 4; j++)
if (a.indexOf (s [j]) < 0 && s [j] != 0) a += '' + s [j];
//проверяем длину новой строки, если она меньше 4-х, то переход к функции "Ошибка"
if (a.length != 4) return r (); else
//если функция дошла до этого места, значит, всё в порядке - сабмит формы разрешаем
return true;
}
</script>
|
| |
|
|
|
|
|
|
|
для: CNTv2.0
(01.03.2008 в 00:16)
| | Я уже решил эту задачку :) В принципе, мне было всё понятно, кроме той строки :)
Но всё равно спасибо!!! | |
|
|
|