[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Валидация форм Javascript+jQuery
Faantoom
Ув. специалисты, JavaScript начал изучать недавно, так как столкнулся с необходимостью написания нескольких скриптов.
В результате моих мучений-обучений на свет появился вот такой скрипт:
Свернутый текст
<script type="text/javascript" src="jquery-1.3.2.min.js"></script>
<
script type="text/javascript">

$(document).ready(function() {

$("#ValidateEmail").keyup(function(){

var email = $("#ValidateEmail").val();

if(email != 0)
{
if(isValidEmailAddress(email))
{

document.getElementById('ValidEmailStatus').innerHTML='<img alt="" border="0" src="valid.png" align="absmiddle" width="16" height="16"> <span style="font-size:7pt;color:#4cff00;">E-mail указан правильно</span>';

} else {

document.getElementById('ValidEmailStatus').innerHTML='<img alt="" border="0" src="invalid.png" align="absmiddle" width="16" height="16"> <span style="font-size:7pt;color:#ff0000;">E-mail указан неправильно</span>';

}
}
else {

document.getElementById('ValidEmailStatus').innerHTML='<img alt="" border="0" src="invalid.png" align="absmiddle" width="16" height="16"> <span style="font-size:7pt;color:#ff0000;">E-mail не указан</span>';


}

}
);

});

function isValidEmailAddress(emailAddress) {
var pattern = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i);
return pattern.test(emailAddress);
}

</script>

<
form>
<
table cellpadding="2" cellspacing="0" border="0">
<
tr>
<
td><input type="text" id="ValidateEmail"></td>
<
td align="left" valign="center" id="ValidEmailStatus">
<
span style="font-size:7pt;color:#ff6a00;">Укажите E-Mail</span>
</
td>
</
tr>
</
table>
</
form>

Он проверяет правильность ввода E-Mail в форму, с помощью регулярных выражений. Собственно саму строку RegExp() я нагло с копи/пастил :) но разговор сейчас не об этом.

Также в инете нашел следующий скрипт:
Свернутый текст
<script type="text/javascript">
var pwds=['password','abc123','myspace','blink182','qwerty','fuckyou','123abc','baseball','football','123456','1234567','12345678','soccer','monkey','liverpool','princess','jordan','jordan23','slipknot','superman','iloveyou','123123','123456789','access','administrator','adminadmin','123qwe'];
var passOK=0;
var chfl2;
function checkPass(){
chfl2=0;
var p1=document.getElementById('fPassword');
var is=0;
passOK=0;
var sign='';
for (var i=0;i<pwds.length;i++){
if (p1.value==pwds[i] || p1.value==pwds[i]+'1'){
is=1;
}
}

if (p1.value.match(/^(.)\1*$/)){sign='Пароль должен содержать различные символы';}
else if (p1.value.length>15){sign='Максимальная длина пароля <b>15</b> символов';}
else if (p1.value.length<6){sign='Минимальная длина пароля <b>6</b> символов';}
else if (p1.value=='kDi3p9S7'){sign='Пароль из примера недопустим';}
else if (p1.value.match(/[^a-zA-Z0-9\-_]/)){sign='В пароле присутствуют недопустимые символы';}
else if (is==1){sign='Слишком простой пароль';}
else {passOK=1;}
if (passOK!=1){
document.getElementById('chf2').innerHTML='<img alt="" border="0" src="er.png" align="absmiddle" width="16" height="16"> <span style="font-size:7pt;">'+sign+'</span>';
}
else {
chfl2=1;
document.getElementById('chf2').innerHTML='<img alt="" border="0" src="ok.png" align="absmiddle" width="16" height="16">';
}
return chfl2;
}
</script>

<
input type="password" id="fPassword" maxlength="16" onblur="checkPass();" style="width:200px"> <span id="chf2"></span>

Он, в отличии от моего, проверяет правильность ввода не сразу же при вводе, а при событии onblur().

Вопрос в следующем: как дополнить мой код вторым, чтобы при проверке использовались не регулярные выражения, а проверка на размер введенного текста и сложность пароля (совпадает ли с примерами со списка var pwds), как это реализовано во втором скрипте, или как дополнить второй код моим, чтобы проверка выполнялась сразу же при вводе, а не по событию onblur()?

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



Спустя 48 минут, 58 секунд (16.11.2010 - 19:16) Basili4 написал(а):
тогда и изучай JavaScript на фига такое писать

писать нативный JS и JQ не понимаю ты бы определился. ИМХО начинать изучение нужно с чистого языка и еще есть засмечательный сайт http://javascript.ru/ сходи тут да почитай

Если тебу нужен скрипт то за рубле 100 на телефон я напишу тебе валидацию которую захочешь если хочешь сам написать иди по ссылке. через пару дней этот вопрос отпадет

Спустя 29 минут, 47 секунд (16.11.2010 - 19:46) Faantoom написал(а):
Цитата
на фига такое писать

Тему создал для того, чтобы обьяснили что нужно делать на конкретном примере.
Цитата
http://javascript.ru/ сходи тут да почитай

Пойти на http://javascript.ru/ я и раньше мог, просто хочется, чтобы обьяснили понятно, доступным языком, а не так, как написанно в учебниках.
Цитата
за рубле 100 на телефон я напишу тебе валидацию

Форум сделан для того, чтобы обсуждать конкретный пример, а если ты не можеш, или не хочеш помочь, зачем постить такие ответы?

Спустя 8 минут, 3 секунды (16.11.2010 - 19:54) Basili4 написал(а):
Faantoom
ты скопипастил 2 куска кода и теперь спрашиваешь как их объединить в один Я тебя убеждаю выкинуть эту дурь и немного поучится.

В 2 словах тебе надо следующее

вот сюда
$(document).ready(function() {

$("#ValidateEmail").keyup(function(){
//..... Сдесь код 1 первого куска
// Вот сюда вставить вызов checkPass()
}

});

});

Если поле вода пароля будет иметь id fPassword то все будет ок

Спустя 3 минуты, 57 секунд (16.11.2010 - 19:58) Faantoom написал(а):
Basili4, Вот теперь спасибо, буду пробовать
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.