Проверка Dojo/Dijit SimpleTextarea и RadioButton (с интеграцией Spring-JS) с помощью атрибута 'required' не поддерживается, но работает в FireFox?
У меня возникли проблемы с интеграцией библиотеки JavaScript DOJO с платформой Spring. В частности, проблема заключается в том, как проверить текстовые и радиокнопки. Я использую библиотеку Spring-Js для украшения стандартных элементов формы HTML, например
<form:input path="actionDescription" id="actionDescriptionId"/>
<script type="text/javascript">
Spring.addDecoration(new Spring.ElementDecoration({
elementId : "actionDescriptionId",
widgetType : "dijit.form.SimpleTextarea",
widgetAttrs : { disabled : false,
required: true,
rows: "4",
cols: "60",
placeHolder: "Enter description of fault",
style: "width:auto;height:50px;"
}}));
</script>
Я занимался разработкой в FireFox (с использованием Firebug) и только сейчас понял (после просмотра документации Dojo/Dijit), что dijit.form.SimpleTextArea не поддерживает атрибут required. Я никогда не проверял это раньше, так как в FireFox все работало нормально. У меня есть кнопка формы, которая при нажатии проверяет все оформленные элементы, а в Firefox все компоненты, включая текстовые области и радиокнопки, всплывают с приятной на вид подсказкой, указывающей, что поле является обязательным. Строка кода используется это:
<script type="text/javascript">
Spring.addDecoration(
new Spring.ValidateAllDecoration({elementId:'proceed', event:'onclick'}));
</script>
Это замечательно, так как предотвращает отправку форм до тех пор, пока все обязательные поля не будут заполнены. Всплывающие радиокнопки с приятным сообщением о том, что пользователь должен выбрать один из вариантов, а текстовая область с приятным сообщением, подсказывающим пользователю что-то напечатать. Тем не менее, это не работает в Safari или IE. Проверка не работает для текстовых областей и радиокнопок в этих других браузерах, поэтому проверка на стороне сервера используется для перенаправления пользователя обратно в форму. Хотя это работает, я предпочитаю в первую очередь предотвращать отправку форм и получать согласованные отчеты об ошибках, а не смесь сообщений об ошибках на стороне клиента и на сервере.
Я действительно изо всех сил пытаюсь понять, почему это работает в Firefox, когда компоненты dijit textarea не должны поддерживать атрибут 'required'? Мне нравится идея использовать spring-js для улучшения базовых компонентов, но я не совсем понимаю, как оформление элемента с помощью digit.form.SimpleTextarea с помощью валидации работает, когда согласно документации по цифрам не поддерживается Проверка?
Мне было интересно, сталкивались ли с этим поведением другие разработчики Spring, использующие интеграцию Spring-Js/Spring-DOJO, и имеют ли они более глубокое понимание того, как она работает. Что я действительно хочу, так это чтобы текстовые области были проверены во всех браузерах, включая IE.
1 ответ
Итак, проблема была в HTML5 в Firefox, обеспечивающем поведение проверки для текстовых областей и радиокнопок. Поскольку моей целевой аудиторией является IE (и, возможно, IE6), я не могу полагаться на проверку формы HTML5, и поэтому я застрял в том факте, что виджеты Dijit DOJO для текстовых областей и радиокнопок не поддерживают проверку.
Благодаря http://www.harelmalka.com/?p=137 я создал обходной путь для включения проверки на textareas. Однако для радиокнопок я предоставил выбор по умолчанию, чтобы исключить необходимость проверки.