Показать сообщение отдельно
Старый 06.02.2002, 22:05
INK• вне форума Посмотреть профиль Отправить личное сообщение для INK• Посетить домашнюю страницу INK• Найти все сообщения от INK•
  № 1  
INK•
 
Аватар для INK•

Регистрация: Nov 2001
Сообщений: 105
Отправить сообщение для INK• с помощью ICQ
Post Проверка формы хитрым способом

Приветствую!
расклад: имееться набор функций (см. ниже) для проверки полей формы. Имееться масив с полями формы.
имееться функция ValidateForm();
проблема: когда сразу надажать на т.е. запустить функцию ВалидейтФорм... окно трейс получяеться пустое только после того как чот то напишеш в поле оно выдает соотвецтвенный результат фелс исли заполнено.. а потом если стреть то тру.
еще есть функция которая управляет переходом курсора в полях... вот она
// TabOrder check------------

_root.TabSelection = function (fields)
{
_focusrect = false;
this.fields = fields.split(",");
this.field = null;
};
_root.TabSelection.prototype.select = function ()
{
if (Key.isDown(9)) {
this.field = Selection.getFocus();
for (var i = 0; i<this.fields.length; i++)
{
if (this.fields[i] == this.field)
{
if (i == this.fields.length-1)
{
i = 0;
}else {
i++;
}
Selection.setFocus(this.fields[i]);
break;
}
}
}
};
_root.Tab = new _root.TabSelection ("_level0.forma.fname,_level0.forma.lname,_level0.forma.email,_level0.forma.cname,_level0.forma.telno,_level0.forma.comments");

///---------------------------------
чего надо добиться.
для "fname","lname","cname","comments");
применить функцию isEmpty()
для поля "email" isEmail()
а для "telno" isDigit.
если все поля заполнены как нужно то do.something();
если нет то возвратить в те поля которые заполнены неправилно предуприждение = "Неправильно что-то тут!"
при этом хотелось бы использовать для всего этого один обЪект _root.Tab = new _root.TabSelection.

Предложения есть? спасибо.

var whitespace = " \t\n\r";
var defaultEmptyOK = false
//
//--- functions set 2 validate form---
String.prototype.isEmpty = function(){
var s = this.toString();
return ((s == null) || (s.length == 0))

}
String.prototype.isWhitespace = function(){
var s = this.toString();
if (isEmpty(s)) return true;
for (i=0;i<s.length;i++) {
if (s.charCodeAt(i) >= 32) return false;
}
return true;
}
String.prototype.isDigit = function(){
c = this.toString();
return ((c >= "0") && (c <= "9"))
}

String.prototype.isEmail = function(eok){
//True if string s is a valid email address.
var s = this.toString();
if (this.isEmpty())
if (arguments.length == 0) return defaultEmptyOK;
else return arguments[0];
if (this.isWhitespace()) return false;
var i = 1;
var sLength = s.length;
while ((i < sLength) && (s.charAt(i) != "@")){
i++;
}
if ((i >= sLength) || (s.charAt(i) != "@")) return false;
else i += 2;
while ((i < sLength) && (s.charAt(i) != ".")){
i++
}
if ((i >= sLength - 1) || (s.charAt(i) != ".")) return false;
else return true;
}

ValidateForm = function ()
{
var FormFields = new Array ("fname","lname","email","cname","telno","comments");
for (var pole in FormFields)
{
trace(eval(FormFields[pole]).isEmpty())

}


};