Как предотвратить перезагрузку страницы при нажатии кнопки zend_form_element_submit? - PullRequest
2 голосов
/ 03 марта 2012

Я начинающий, когда дело доходит до Zend Framework. Я создал форму с кнопкой отправки, используя zend_form и zend_form_element_submit. После нажатия кнопки «Отправить» код выполняет манипулирование данными на основе ввода. Если ввод не введен, ничего не происходит.

Когда я нажимаю кнопку отправки, она перезагружает мою веб-страницу, хотя изменений нет. Как я могу предотвратить загрузку этой страницы? Могу ли я использовать zend_form_element_button, который вызовет событие? как бы мне это запечатлеть?

Любая помощь будет в основном оценена! Спасибо.

1 Ответ

2 голосов
/ 03 марта 2012

Кнопка отправки всегда приводит к отправке формы, что обычно приводит к перезагрузке страницы независимо от того, верны ли данные в любом из элементов формы или нет.

Используя Zend Framework, выможет добавить в вашу форму событие JavaScript onsubmit, которое может проверить элементы формы и решить, должна ли форма быть отправлена ​​или нет.Или вы можете использовать Ajax для отправки формы, что не приведет к перезагрузке страницы.

Вот пример использования onsubmit.Вы должны создать свою форму на контроллере, назначить ее представлению, а затем добавить в свой вид атрибут onsubmit и соответствующий код.

view.phtml

<?php

$this->form->setAttrib('onsubmit', 'return checkForm()');

echo $this->form;
?>

<script type="text/javascript">
  function checkForm()
  {
      if (form_passes_validation) {
          return true; // form will submit
      } else {
          return false; // form will NOT submit (if javascript is enabled)
      }
  }
</script>

Youпридётся придумать логику для form_passes_validation, но если onsubmit вернет false, то форма не будет отправлена.

Имейте в виду, что PHP - это все стороны сервера.Вы не можете выполнить какую-либо обработку PHP, чтобы определить, должна ли форма отправляться, все это должно быть на стороне клиента, или вам придется жить с вашей формой, перезагружая страницу, даже если данные не введены.

...