Вход

Просмотр полной версии : Проверка формы хитрым способом


INK•
06.02.2002, 22:05
Приветствую!
расклад: имееться набор функций (см. ниже) для проверки полей формы. Имееться масив с полями формы.
имееться функция ValidateForm();
проблема: когда сразу надажать на т.е. запустить функцию ВалидейтФорм... окно трейс получяеться пустое :mad: только после того как чот то напишеш в поле оно выдает соотвецтвенный результат фелс исли заполнено.. а потом если стреть то тру.
еще есть функция которая управляет переходом курсора в полях... вот она
// 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())

}


};

Junge
07.02.2002, 01:15
давай исходник

INK•
07.02.2002, 06:32
всего 5 к

Хрюндик
07.02.2002, 12:42
извини, мне лень было читать, но помойму трабла в том что у незаполненных полей значение null, вот на это и надо проверять их

INK•
07.02.2002, 15:46
Оригинал написал(а) Хрюндик
извини, мне лень было читать, но помойму трабла в том что у незаполненных полей значение null, вот на это и надо проверять их :) :)

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

поясняю.. в данном случяе речь идет об использовании хитрого приема в програмировании.. т.е. хочеться написать очень хитрый код ... пожарить яишницу яйца не розбив.
конечно можно было бы сделать и проще , но сделать хочю правильнее. ;) ;) ;)

Хрюндик
07.02.2002, 17:37
Изивните, больше не буду...
Щас покопаюсь может и пойму в чем дело ...

Хрюндик
07.02.2002, 18:03
Покапался я и понял одну очень умную вешь :

делай как проще, а то будет много проблем.

Я понимаю, что краткость сестра таланта, но зачем же так?
Почему нельзя сделать все по-простому.
Если надо могу даже сам сделать. :)
А так мне понравилось копаться в твоем исходнике, INC
Я еще буду копаться, очень охота понять как эта штука работает...

INK•
07.02.2002, 20:24
ну копайся.. типа ройся ... ;) ;) просто делать нельзя..
пока ты там копался я придумал сделать валидатор мыла на РэгЭкс.... это типа еще сложнее..
успехов
Оригинал написал(а) Хрюндик
Покапался я и понял одну очень умную вешь :

делай как проще, а то будет много проблем.

Я понимаю, что краткость сестра таланта, но зачем же так?
Почему нельзя сделать все по-простому.
Если надо могу даже сам сделать. :)
А так мне понравилось копаться в твоем исходнике, INC
Я еще буду копаться, очень охота понять как эта штука работает...