Заметки веб-технолога (web_tech) wrote,
Заметки веб-технолога
web_tech

Web Forms и серверная валидация

Оказывается, в девятой Опере ввели экспериментальную поддержку Web Forms.

Узнал я об этом во время тестирования нового XSLT-шаблона для форм. Атрибут required каким-то образом просочился в HTML, и Опера напрочь отказывалась отправлять форму, требуя заполнить обязательное поле. Никаких перезарузок страницы, никаких скриптов — радость для веб-мастера!

Всё это хорошо, но в других браузерах поддержкой Web Forms и не пахнет (да и сама спецификация находится в состоянии Working Draft). Кроме того, серверную валидацию никто не отменял.

С другой стороны, Web Forms изначально разрабатывались с учётом обратной совместимости, что позволяет уже сейчас использовать расширенный набор элементов и атрибутов как в HTML-, так и в XML-коде для серверной валидации. Например:

@validateForm[xPage][i;hField;sName;sPattern]
$hField[^xPage.select[//form[@submitted]/field]]
^for[i](0;$hField-1){
	$sName[^hField.$i.getAttribute[name]]
	^if(def $form:$sName){
		$sPattern[^hField.$i.getAttribute[pattern]]
		^if(def $sPattern){
			^try{
				^if(^form:$sName.match[^^(?:$sPattern)^$;i]){
					^hField.$i.setAttribute[patternMismatch;1]
				}
			}{
				$exception.handled(1)
			}
		}
		^switch[^hField.$i.getAttribute[type]]{
			^case[email]{
				^if(^is_email[^hField.$i.getAttribute[value]]){
					^hField.$i.setAttribute[typeMismatch;1]
				}
			}
		}
	}{
		^if(^hField.$i.getAttribute[required]){
			^hField.$i.setAttribute[valueMissing;1]
		}
	}
}
$result[$xPage]
Tags: opera, web forms, xml, идея
Subscribe

  • Множественный UPDATE

    Если нужно обновить сразу несколько записей, необязательно делать UPDATE для каждой из них. В простейших случаях можно использовать следующий…

  • MSSQL vs MySQL

    Google рекомендует:

  • OR vs UNION

    Задача: достать из базы одним запросом корневые объекты и все объекты текущего треда, чтобы потом построить из них меню сайта и дублирующую…

  • Post a new comment

    Error

    default userpic
    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 0 comments