Мгновенная проверка полей
всем привет.
подскажите как решить вопрос - есть три поля формы <input type="text" value="" name="userName" id="userName"> <br> <input type="text" value="" name="phone" id="phoneNumber"> <br> <input type="text" value="" name="email" id="userEmail"> нужно сделать JS проверку - если ВСЕ 3 поля заполонены, то например вывести алерт какой нибудь. ну и дальше могут быть еще поля, но главное проверить эти три. на лету по ходу заполнения формы спасибо |
Так юзер только одну букву поставит в третье поле и оно будет считаться заполненным и вылезет алерт. Так и должно быть?
|
нет. только если все три поля заполнены вылезет алерт
|
var fields = {
userName: false,
phoneNumber: false,
userEmail: false
};
var f = function(){
switch (this.id) {
case 'userName':
fields[this.id] = this.value.match(...) ? true : false;
break;
case 'phoneNumber':
fields[this.id] = this.value.match(...) ? true : false;
break;
case 'userEmail':
fields[this.id] = this.value.match(...) ? true : false;
break;
}
var sum = 0;
for (var key in fields) {
sum += fields[key] ? 1 : 0;
}
sum === 3 && alert('message')
};
$('#userName').change(f);
$('#phoneNumber').change(f);
$('#userEmail').change(f);
Если необходимо. можно подвесить функцию f на keyup события, чтобы отслеживать при каждом нажатии клавиши, однако это не решает проблем при использовании мыши для редактирования содержимого поля |
Спасибо demoniqus,
попробую |
Цитата:
нашел функцию blur но только не совсем понял как ее использовать при проверке трех полей. или никак?
$('#name').blur(function(){}
|
demoniqus,
с вашим примером не получается сделать проверку. ошибку выдает на строке case 'userName': 09 fields[this.id] = this.value.match(...) ? true : false; |
Цитата:
Цитата:
|
Цитата:
|
<html>
<head>
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" >
var fields = {
userName: false,
phoneNumber: false,
userEmail: false
};
var f = function(){
switch (this.id) {
case 'userName':
fields[this.id] = this.value.match(/[\s\w]+/) ? true : false;
break;
case 'phoneNumber':
fields[this.id] = this.value.match(/[\d]+/) ? true : false;
break;
case 'userEmail':
fields[this.id] = this.value.match(/[\d\w._]+@[\d\w._]+/) ? true : false;
break;
}
var sum = 0;
for (var key in fields) {
sum += fields[key] ? 1 : 0;
}
sum === 3 && alert('message')
};
$(function(){
$('#userName').change(f);
$('#phoneNumber').change(f);
$('#userEmail').change(f);
})
</script>
</head>
<body>
<input type="text" id="userName" /><br />
<input type="text" id="phoneNumber" /><br />
<input type="text" id="userEmail" /><br />
</body>
</html>
|
Цитата:
|
| Часовой пояс GMT +3, время: 00:02. |