Javascript предотвращает отправку формы Spring - PullRequest
0 голосов
/ 15 июля 2009

Странная проблема здесь происходит. Я разрабатываю портлет 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;
      }
   }
}

Ответы [ 2 ]

1 голос
/ 20 июля 2009

Я решил эту проблему, изменив Javascript для очистки формы, чтобы очистить только те поля, которые я указал. Я предполагаю, что обобщенная функция, размещенная выше, очищает некое скрытое значение, помещенное Spring, и вызывает ошибку.

0 голосов
/ 15 июля 2009

Не могли бы вы просто использовать:

<input type="reset" /> 

очистить вашу форму? Я вполне уверен, что он устанавливает форму, как это было при загрузке страницы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...