Проверка 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. Однако для радиокнопок я предоставил выбор по умолчанию, чтобы исключить необходимость проверки.

Другие вопросы по тегам