|
|
|
| На некоторых сайтах есть проверка правильности ввода пароля при регистрации (совпадения паролей из двух полей).
При вводе пароля во второе поле проверяется, совпадает ли пароль из первого и второго поля.
И писать текст "Правильно" либо "Неправильно". Но этот текст писать только, если во втором поле количество символов больше или равно количеству символов в первом поле.
В яваскрипте не разбираюсь, поэтому прошу помощи - написать скриптик, как это делается. | |
|
|
|
|
|
|
|
для: Freddie_X
(06.02.2008 в 20:07)
| |
<script>
function checkPass() {
if (document.getElementById('pass').value != document.getElementById('passch').value) {
alert('No check!')
return false;
} else return true;
}
</script>
<form action="" method="post" onsubmit="return checkPass()">
<input type="password" id="pass">
<input type="password" id="passch">
<input type="submit" value="Send">
</form>
|
| |
|
|
|
|
|
|
|
для: sim5
(06.02.2008 в 20:30)
| | Не совсем то, что нужно! Хотелось бы, чтобы проверка шла не при нажатии Сабмита, а прямо на лету. | |
|
|
|
|
|
|
|
для: Freddie_X
(06.02.2008 в 20:38)
| | А зачем? Вас не будет раздражать предупреждения при каждом не верно введенном симоле? | |
|
|
|
|
|
|
|
для: sim5
(06.02.2008 в 21:11)
| | Поэтому я и прошу скрипт, который выводит сообщение, только если количество символов во втором поле больше или равно кол-ву символов в первом поле.
Внимательней надо читать! :)
И может, не правильно выразился, мне нужен не alert(), а вывод текста в браузер. | |
|
|
|
|
|
|
|
для: Freddie_X
(06.02.2008 в 21:17)
| | >больше или равно кол-ву символов в первом поле - так не делается нигде, ибо глупо этою
Обратите внимание, что ввод повторного пароля везде(где он есть!) расположен никак не последним перед кнопкой "Зарегистрировать" - там есть ещё несколько полей, требующих заполнения.
И ещё обратите внимание, что сообщение ("ОК" или "Ошибка!") появляется не в момент окончания ввода повторного пароля, а в момент, когда поле повторного пароля теряет фокус.
Т.е. скрипт, предложенный вам, можно переделать так:
<script>
function checkPass ()
{
with (document)
getElementById ('info').innerHTML = (getElementById ('pass').value != getElementById ('passch').value) ?
'Пароль повторен неверно!' : 'OK!';
}
</script>
<form>
Password: <input type="password" id="pass"><br>
Repeat password: <input type="password" id="passch" onchange="checkPass ()">
<b style="color: red" id="info"></b><br>
Field1: <input><br>
Field2: <input><br>
Field3: <input><br>
<input type="submit" value="Send">
</form>
|
| |
|
|
|
|
|
|
|
для: CNTv2.0
(06.02.2008 в 21:36)
| | Скрипт, работает, спасибо!
Но я хотел бы знать, можно ли такое сделать, но чтобы надпись "ОК" или "Не ОК" появлялась сразу, как только во втором поле сивмолов будет столько же, сколько и в первом?
Допустим, ввели в pass 5 символов, далее вводим символы в passch. Как только в passch есть 5 символов (без onchange) - проводится проверка и выдаётся сообщение "ОК" или "Не ОК". Или это не реализуемо с помощью ЯваСкрипта? | |
|
|
|
|
|
|
|
для: Freddie_X
(06.02.2008 в 21:48)
| | Я же вам написал, что это глупо, и что так никто не делает.
Вы, видимо, не поняли - почему это ГЛУПО?
Объясняю.
В поле <input type="password"> значение пароля можно ввести как с клавиатуры, вбивая по одному символу, так и ещё ТРЕМЯ способами (вставить из буфера с помощью мышки, вставить из буфера с помощью панели управления браузера, вставить из буфера с помощью клавиш Ctrl+V)
В Эксплорере есть аж два события - onpaste и onpropertychange - позволяющие отследить, что значение в <input> изменилось, а вот в прочих браузерах - НЕТ ТАКОЙ ВОЗМОЖНОСТИ.
Ну и как - мысль поняли?
Имеем 4 варианта ввода.
Имеем 5 популярных браузеров (Эксплорер, Мозилла, Опера, Сафари, Нетскейп).
Только в одном из браузеров можем отследить все 4 варианта ввода.
А в остальных 4-х браузерах можем отследить только один вариант ввода (клавиатурный).
Т.е. из 4*5 = 20 случаев сочетаний типа ввода и типа браузера работать правильно будет только в 8-и случаях, а в 12-ти остальных случаях браузеры никак не будут реагировать на скрипт.
Что-то делать при таких пропорциях (8 против 12) - глупо. | |
|
|
|
|
|
|
|
для: CNTv2.0
(06.02.2008 в 22:16)
| | Ясно, спасибо за разъяснение!
Но я всё таки видел на некоторых сайтах такую фишку! И в Опере, например, она работала! | |
|
|
|
|
|
|
|
для: Freddie_X
(06.02.2008 в 22:18)
| | В Опере, как и вообще во всех популярных браузерах, можно отследить клавиатурный ввод (о чём я и написал ранее).
То, что где-то кто-то реализовал отслеживание клавиатурного ввода - я не сомневаюсь (ибо это просто).
Ведь недаром в песне поётся:
"Я другой такой страны не знаю
Где так много разных дураков..."
Если хотите присоединиться к их числу - я не возражаю:
<script>
function checkPass (x)
{
with (document)
if (x)
getElementById ('info').innerHTML = (getElementById ('pass').value != getElementById ('passch').value) ?
'Пароль повторен неверно!' : 'OK!';
else
if (getElementById ('passch').value.length >= getElementById ('pass').value.length)
getElementById ('info').innerHTML = (getElementById ('pass').value != getElementById ('passch').value) ?
'Пароль повторен неверно!' : 'OK!';
}
</script>
<form>
Password: <input type="password" id="pass"><br>
Repeat password: <input type="password" id="passch" onchange="checkPass (1)" onkeyup="checkPass (0)">
<b style="color: red" id="info"></b><br>
Field1: <input><br>
Field2: <input><br>
Field3: <input><br>
<input type="submit" value="Send">
</form>
|
А теперь попробуйте в любом браузере вставить повтор НЕВЕРНОГО ПАРОЛЯ (большего по количеству символов) мышкой из буфера.
Ну и?
Когда сработает?
Только тогда, когда фокус покинет этот инпут.
И спрашивается - "зачем платить больше?" :-) | |
|
|
|
|
|
|
|
для: CNTv2.0
(06.02.2008 в 22:30)
| | Спасибо за оскобление :))))) | |
|
|
|
|
|
|
|
для: Freddie_X
(06.02.2008 в 22:32)
| | Пожалуйста.
И радуйтесь, что это было не "оскопление" :-) | |
|
|
|
|
|
|
|
для: Freddie_X
(06.02.2008 в 22:18)
| | Лучше тогда добавить проверку на использования вводимого логина. | |
|
|
|
|
|
|
|
для: Freddie_X
(06.02.2008 в 21:17)
| | Если пароли равны, то значит и число символов одинаково, в тоже время при одинаковом числе символов, значение полей может быть не равно. Вывод текста во что? | |
|
|
|
|
|
|
|
для: sim5
(06.02.2008 в 21:37)
| | Надо всего лишь заменить onchange, на onkeyup, и получите тот результат, который вам нужен, но в словах CNTv2.0 есть намек, что такие способы могут иногда не сработать.
Скорее всего вам нужно было вот так
<script>
function checkPass() {
with(document)
getElementById('info').innerHTML = (getElementById('pass').value != getElementById('passch').value) ? '' : 'OK!';
}
</script>
<form>
Password: <input type="password" id="pass"><br>
Repeat password: <input type="password" id="passch" onKeyUp="checkPass()">
<b style="color: red" id="info"></b><br>
Field1: <input><br>
Field2: <input><br>
Field3: <input><br>
<input type="submit" value="Send">
</form>
|
Проверял в ie, opere, firefox - работает | |
|
|
|
|
автор: feilx_ (10.04.2008 в 15:13) |
|
|
для: Антоха
(06.02.2008 в 22:11)
| | А как сделать, чтоб кнопка Send была неактивна до тех пор пока не повится правельный проль ? | |
|
|
|