Поверка заполнения формы

 
0
 
JavaScript
ava
Kefir | 23.11.2003, 10:07
Вопрос думаю ужасно простой. Есть форма с полями, допустим
<input name=f1...>
<input name=f2...>
При щелчке на submit надо проверять заролнил ли их юзер, и если нет, то нужно показать юзерц надпись "You have to fill in all fields marked *!" в месаг боксе.
Я в JS дуб дубом...
Ответы (10)
ava
SVK | 23.11.2003, 12:17 #
Вот скрипт, который проверяет, что все поля, имя которых начинается с "c_" заполнены. Причем кол-во символов, исключая пробелы, должно быть не менее minLength (2 в данном случае)

<HTML><BODY>
<script>
var minLength = 2; //min. length of the field excluding spaces
function checkFields()
{ var frm = document.theForm;
for (j=0; j<frm.elements.length; j++)
{ if (/c_.*/.test(frm.elements[j].name))
{ if (frm.elements[j].value.replace(/\s/g,"").length < minLength)
{ alert ("You must fill al the fields, marked (*)");
return false;
}
}
}
frm.submit();
}
</script>

<form name=theForm onSubmit="return checkFields();">
c_f1 (*): <input name=c_f1><br>
f2: <input name=f2"><br>
f3: <input name=f3><br>
c_a1 (*):<textarea name=c_a1></textarea>
<INPUT type=submit value=" OK " >
</form>

</BODY></HTML>

ava
Kefir | 23.11.2003, 15:39 #
Сердечно благодарю.
ava
Alx | 07.12.2003, 10:47 #
Зачем такие сложности?


<script>
function rightdata()
{var right=false;
if ((f1 != "") && (f2 != ""))
right = true;
if (right == true)
formname.submit();
}
</script>

****

<form name=theForm onbeforesubmit="dataright();">
<input name=f1><br>
<input name=f2"><br>
<INPUT type=submit value=" OK " >
</form>


Вроде так, но можеть чуть-чуть подкоррретировать...)
ava
Alx | 07.12.2003, 10:48 #
прошу прощения, <form name="formname" ...>
ava
Secandr | 07.12.2003, 11:13 #
ALEXANDRO Ещё у вас разные названия функций rightdata и dataright.
ava
Alx | 07.12.2003, 11:24 #
Прошу прощения, я спешил!)
ava
[xoodo] | 09.12.2003, 10:21 #
У меня только первыи вариант работает. onbeforesubmit не признает ни в какую :(
ava
Alx | 09.12.2003, 11:02 #
Ну ладно уж! если совсем не выпендриваться, то пусть буит так:


<script>
function rightdata()
{var right=false;
if ((f1 != "") && (f2 != ""))
right = true;
if (right == true)
formname.submit();
}
</script>

****

<form name=formname>
<input name=f1><br>
<input name=f2"><br>
<INPUT type=button value="  OK  "  onClick="rightdata();">
</form>



Чё тута сложного? Говорят, что JavaScript вначале создавался для проверки форм на клиентском компе...))
ava
SeregaLBN | 09.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);"
/>
ava
[xoodo] | 10.12.2003, 01:12 #
Цитата




if (!((ch == '0')||(ch == '1')||(ch == '2')||(ch == '3')||(ch == '4')||(ch == '5')||(ch == '6')||(ch == '7')||(ch == '8')||(ch == '9')))




Хмм... Боги создали и подарили нам массивы и циклы для их просмотра...
Зарегистрируйтесь или войдите, чтобы написать.
Фирма дня
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Участники
  Kefir   [xoodo]   SVK   Secandr   SeregaLBN   Alx
advanced
Отправить