Ответ
Misha v.3 17.05.2007 21:42
/ 17.05.2007 23:55
1. @USE\Lib.p => ^use[Lib.p] и поместить внутрь соотв. case
2. константу 'field' -- в @auto[]
3. maxlength надо проверять даже если .getAttribute[valid] == 0, иначе сразу не найдём эту ошибку, и посетителю придется постить данные повторно.
4. если у field нет ни одного аттрибута -- будет ошибка тут: ^if(def $hAttr.value) (если используете Lib.p, то наверняка подключен и Node.p, тогда: $hAttr[^Node:getAttributes[$hFields.$i]] )
5. так ли нужна тут правильная последовательность элементов? (^for[i](0;$hFields-1)) может foreach?
6. вас не смутило такое количество одинакового кода? я бы написал отдельный метод:
@checkNode[xNode;jIsValid]
^if(!$jIsValid){
^xNode.setAttribute[typeMismatch;1]
^xNode.setAttribute[valid;0]
}
$result[]
и вызывал-бы:
...
^case[week]{
^checkNode[$hFields.$i](^hAttr.value.match[^^\d{4}-W\d{2}^$]))
}
...
P.S. хотя на самом деле я в этот метод унёс бы и доставание value у node и в зависимости от .type сам бы брял нужный regexp, которые я сложил бы в хеш вместо $reDate & Co
P.P.S. блин, подумал что в @Node:foreachChild надо sNameAttr заменить на sAttr и если задано -- класть туда $caller.$sAttr[^self.getAttributes[$xNode]]
- WebForms: валидация форм, Азат Разетдинов [M] 17.05.2007 21:08 / 17.05.2007 21:20
- Ответ, Misha v.3 [M] 17.05.2007 21:42 / 17.05.2007 23:55