| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > JavaScript: Общие вопросы > Поверка заполнения формы |
| Автор: Kefir 23.11.2003, 10:07 |
| Вопрос думаю ужасно простой. Есть форма с полями, допустим <input name=f1...> <input name=f2...> При щелчке на submit надо проверять заролнил ли их юзер, и если нет, то нужно показать юзерц надпись "You have to fill in all fields marked *!" в месаг боксе. Я в JS дуб дубом... |
| Автор: SVK 23.11.2003, 12:17 | ||
Вот скрипт, который проверяет, что все поля, имя которых начинается с "c_" заполнены. Причем кол-во символов, исключая пробелы, должно быть не менее minLength (2 в данном случае)
|
| Автор: Kefir 23.11.2003, 15:39 |
| Сердечно благодарю. |
| Автор: Alx 7.12.2003, 10:47 | ||
Зачем такие сложности?
Вроде так, но можеть чуть-чуть подкоррретировать...) |
| Автор: Alx 7.12.2003, 10:48 |
| прошу прощения, <form name="formname" ...> |
| Автор: Secandr 7.12.2003, 11:13 |
| ALEXANDRO Ещё у вас разные названия функций rightdata и dataright. |
| Автор: Alx 7.12.2003, 11:24 |
| Прошу прощения, я спешил!) |
| Автор: [xoodo] 9.12.2003, 10:21 |
| У меня только первыи вариант работает. onbeforesubmit не признает ни в какую |
| Автор: Alx 9.12.2003, 11:02 | ||
Ну ладно уж! если совсем не выпендриваться, то пусть буит так:
Чё тута сложного? Говорят, что JavaScript вначале создавался для проверки форм на клиентском компе...)) |
| Автор: SeregaLBN 9.12.2003, 11:51 |
| Вот еще ф-ции для проверки. Проверку я у себя проверял при вводе информации. function checkDate(obj) { var val = obj.value; var len = val.length; var countPoint = 0; for(var i = 0; i < len; i++) { var ch = val.substring(i,i+1); if (!( (ch == '.')|| (ch == '0')|| (ch == '1')|| (ch == '2')|| (ch == '3')|| (ch == '4')|| (ch == '5')|| (ch == '6')|| (ch == '7')|| (ch == '8')|| (ch == '9')) ) { //alert('Ошибка\nВведён неверный символ\n\nФормат даты: <ГГГГ.ММ>'); //window.status = 'Ошибка! Введён неверный символ. Формат даты: <ГГГГ.ММ>'; obj.value = val.substring(0,i); return false; } if (ch=='.') countPoint++; if (countPoint > 1) { //alert('Ошибка\nНеверно проставлен разделитель\n\nФормат даты: <ГГГГ.ММ>'); //window.status = 'Ошибка! Неверно проставлен разделитель. Формат даты: <ГГГГ.ММ>'; obj.value = val.substring(0,i); return false; } } var nowDate = new Date(); var maxYear = nowDate.getYear(); var minYear = 1990; var inputYear; for(var i = 0; i < ((len<4)?len:4); i++) { inputYear = str2int(val.substring(0,i+1)); var y1, y2; switch (i) { case 0: y1 = inputYear*1000; y2 = inputYear*1000+999; break; case 1: y1 = inputYear*100 ; y2 = inputYear*100 +99 ; break; case 2: y1 = inputYear*10 ; y2 = inputYear*10 +9 ; break; case 3: y1 = inputYear ; y2 = inputYear ; break; } if (!(((y1>=minYear) && (y1<=maxYear)) || ((y2>=minYear) && (y2<=maxYear)))) { //alert('Ошибка\nВведён неверный год\n\nНеобходимо один из: '+minYear+'..'+maxYear); //window.status = 'Ошибка! Введён неверный год. Необходимо один из: '+minYear+'..'+maxYear; obj.value = val.substring(0,i); return false; } } if (len>4) { if (val.substring(4,5) != '.') { //alert('Ошибка\nВставьте разделитель'); //window.status = 'Ошибка! Вставьте разделитель.'; obj.value = val.substring(0,4); return false; } } if (len>5) { var maxMonth = ((inputYear==maxYear) ? (nowDate.getMonth()+1) : 12); var minMonth = ((len==6) ? 0 : 1); // могут вводить 01..09,10,11,12 и 1,2..10,11,12 var inputMonth = str2int(val.substring(5,len)); if (!((inputMonth>=minMonth)&&(inputMonth<=maxMonth))) { //alert('Ошибка\nВведён неверный месяц\n\nНеобходимо один из: '+minMonth+'..'+maxMonth); //window.status = 'Ошибка! Введён неверный месяц. Необходимо один из: '+minMonth+'..'+maxMonth; obj.value = val.substring(0,len-1); return false; } } //window.status = ''; return true; } function checkMoney(obj) { var val = obj.value; var nFloat = -1; // кол-во символов после запятой for(var i = 0; i < val.length; i++) { var ch = val.substring(i,i+1); if (ch == '.'){ if (nFloat == -1) nFloat = 0; else { //alert('Ошибка\nЛишний разделитель знаков'); //window.status = 'Ошибка! Лишний разделитель знаков'; obj.value = val.substring(0,i); return false; } } if (!( (ch == '.')|| (ch == '0')|| (ch == '1')|| (ch == '2')|| (ch == '3')|| (ch == '4')|| (ch == '5')|| (ch == '6')|| (ch == '7')|| (ch == '8')|| (ch == '9')) ) { //alert('Ошибка\nВведён неверный символ'); //window.status = 'Ошибка! Введён неверный символ'; obj.value = val.substring(0,i); return false; } else { if ((nFloat >= 0) && (ch != '.')) nFloat++; if (nFloat > 2) { //alert('Ошибка\nСлишком много знаков после разделителя'); //window.status = 'Ошибка! Слишком много знаков после разделителя'; obj.value = val.substring(0,i); return false; } } } //window.status = ''; return true; } function checkNumber(obj) { var val = obj.value; for(var i = 0; i < val.length; i++) { var ch = val.substring(i,i+1); if (!( (ch == '0')|| (ch == '1')|| (ch == '2')|| (ch == '3')|| (ch == '4')|| (ch == '5')|| (ch == '6')|| (ch == '7')|| (ch == '8')|| (ch == '9') ) ) { //alert('Ошибка\nВведён неверный символ'); //window.status = 'Ошибка! Введён неверный символ'; obj.value = val.substring(0,i); return false; } } //window.status = ''; return true; } function str2int(val) { //alert(val); var result = 0; for(var i = 0; i < val.length; i++) { var n=0; var ch = val.substring(i,i+1); switch (ch) { case '1': n=1; break; case '2': n=2; break; case '3': n=3; break; case '4': n=4; break; case '5': n=5; break; case '6': n=6; break; case '7': n=7; break; case '8': n=8; break; case '9': n=9; break; case '0': n=0; break; default: return result; } result *= 10; result += n; } return result; } function str2float(val) { //alert(val); var result = 0.00; var point = false; var power=0; for(var i = 0; i < val.length; i++) { var ch = val.substring(i,i+1); if (ch=='.') { if (point) return result; else point = true; } else { var n=0; switch (ch) { case '1': n=1; break; case '2': n=2; break; case '3': n=3; break; case '4': n=4; break; case '5': n=5; break; case '6': n=6; break; case '7': n=7; break; case '8': n=8; break; case '9': n=9; break; case '0': n=0; break; default: return result; } if (point) { power--; result += n*Math.pow(10,power); } else { result *= 10; result += n; } } } return result; } На HTML'e: <input type="Text" name="NUMBER" maxlength="10" value="" onkeyup="checkNumber(this)" /> <input type="Text" name="PERIOD" maxlength="7" value="" onkeyup="checkDate(this)" /> <input type="Text" name="MONEY" maxlength="9" value="0.00" onkeyup="checkMoney(this);" /> |
| Автор: [xoodo] 10.12.2003, 01:12 | ||||
Хмм... Боги создали и подарили нам массивы и циклы для их просмотра... |