Странная проблема здесь происходит. Я разрабатываю портлет JSR168, использующий Spring и тег taglib формы Spring.
У меня есть форма поиска на странице, чтобы просмотреть каталог отчетов, основанный на критериях, выбранных пользователем, и по большей части он работает нормально. Однако существует одна последовательность событий, которая вызывает ошибку.
У меня есть функция JavaScript, которую я обнаружил, чтобы очистить 7 критериев, которые пользователь может указать. Он очищает все текстовые поля, устанавливает для выбранного индекса всех раскрывающихся списков значение 0 и по умолчанию для группы переключателей выбирается тот, который по умолчанию выбран. Так что это все хорошо, и это прекрасно работает.
Ниже приведены 2 сценария, 1 из которых демонстрирует, что он работает, как предполагалось, и 1, показывающий ошибку.
- Введите что-нибудь
- Нажмите Поиск
- Нажмите Поиск
- Результаты показаны (как и раньше)
- Введите что-то новое и нажмите кнопку поиска
- Результаты показаны (новые, правильные результаты)
Вот ошибка
- Введите что-нибудь
- Нажмите Поиск
- Нажмите «Очистить форму», чтобы запустить JavaScript
- [Необязательно, это ничего не меняет: введите что-то]
- Нажмите Поиск
- Без изменений в результатах <- вот ошибка </li>
- Нажмите Поиск снова
- Теперь отображаются правильные результаты
Вот JavaScript для справки (я понятия не имею, хорошо это или плохо, JS, я не писал в прошлом)
function clearForm(oForm) {
var elements = oForm.elements;
oForm.reset();
for(i=0; i<elements.length; i++) {
field_type = elements[i].type.toLowerCase();
switch(field_type) {
case "text":
case "password":
case "textarea":
case "hidden":
elements[i].value = "";
break;
case "radio":
case "checkbox":
if (elements[i].checked) {
elements[i].checked = false;
}
break;
case "select-one":
case "select-multi":
elements[i].selectedIndex = 0;
break;
default:
break;
}
}
}