CakePHP 3 i jQuery - opcjonalne pola

W tej części zaimplementujemy pokazywanie i ukrywanie opcjonalnych pól formularza za pomocą jQuery. Załóżmy, że mamy dwa typy użytkowników osoba fizyczna i firma. Jeden lub drugi musi być wprowadzony, ale nie chcemy wymagać informacji o firmie dla osoby fizycznej lub odwrotnie. Możemy więc włączyć/wyłączyć wymagania i wyświetlić/ukryć sekcje na podstawie wyboru. Najpierw w pliku src/Template/Layout/default.ctp dodajemy w sekcji head bibliotekę jQuery.

  1. echo $this->Html->script('http://code.jquery.com/jquery.min.js');
Następnie w formularzu dodawania użytkownika /src/Template/Users/add.ctp dodajemy pole wyboru i używamy jQuery do pokazywania i ukrywania oraz włączania i wyłączania wymaganych pól.
  1. <?php echo $this->Form->input('user', ['type' => 'radio', 'label' => 'user is:', 'options' => ['Business', 'Individual'], 'required' => true]); ?>
  2. <div class="business" style="display:none">
  3. <?php
  4. echo $this->Form->input('business_name', ['required' => true]);
  5. echo $this->Form->input('business_telephone');
  6. echo $this->Form->input('business_address', ['required' => true]);
  7. echo $this->Form->input('business_city', ['required' => true]);
  8. echo $this->Form->input('business_state', ['required' => true, 'options' => $states]);
  9. echo $this->Form->input('business_zip', ['required' => true]);
  10. ?>
  11. </div>
  12. <div class="individual" style="display:none">
  13. <?php
  14. echo $this->Form->input('name', ['required' => true]);
  15. echo $this->Form->input('telephone');
  16. echo $this->Form->input('address', ['required' => true]);
  17. echo $this->Form->input('city', ['required' => true]);
  18. echo $this->Form->input('state', ['required' => true, 'options' => $states]);
  19. echo $this->Form->input('zip', ['required' => true]);
  20. ?>
  21. </div>
  22. <script type="text/javascript">
  23. if (jQuery('#user-0').is(':checked')) {
  24. showAndRequire('.business', true);
  25. showAndRequire('.individual', false);
  26. } else if (jQuery('#user-1').is(':checked')) {
  27. showAndRequire('.individual', true);
  28. showAndRequire('.business', false);
  29. }
  30. jQuery('#user-0').click(function() {
  31. showAndRequire('.business', true);
  32. showAndRequire('.individual', false);
  33. });
  34. jQuery('#user-1').click(function() {
  35. showAndRequire('.individual', true);
  36. showAndRequire('.business', false);
  37. });
  38. function showAndRequire(section, onOff) {
  39. jQuery(section).toggle(onOff);
  40. if (onOff) {
  41. jQuery(section + ' .required input').attr('required', onOff);
  42. jQuery(section + ' .required select').attr('required', onOff);
  43. } else {
  44. jQuery(section + ' .required input').removeAttr('required');
  45. jQuery(section + ' .required select').removeAttr('required');
  46. }
  47. }
  48. </script>
Teraz, w zależności co użytkownik wybierze firmę lub osobę fizyczną, wyświetli się tylko ta sekcja, która jest potrzebna i tylko ta sekcja będzie miała ustawione wymagane atrybuty.

Strona korzysta z plików cookies

Strona korzysta z plików cookies w celu realizacji usług i zgodnie z Polityką Plików Cookies. Możesz określić warunki przechowywania lub dostępu do plików cookies w Twojej przeglądarce.
OK
Więcej
Free cookie consent by cookie-script.com