Отображать поле формы в зависимости от нескольких ответов

#php #wordpress #forms

#php #wordpress #формы

Вопрос:

Я создаю форму регистрации и создал скрытые поля, которые отображаются только в зависимости от выбранного значения. Проблема в том, что я не могу понять, как отображать поле на основе нескольких выбранных значений.

Например: допустим, у одного из вопросов есть выпадающее меню с возможными ответами A, B, C или D, я понимаю, как заставить скрытое поле отображаться, если выбран ОДИН из ответов, но не могу заставить его отображаться, если они выбирают A ИЛИ B.

Вот мой код, я надеюсь, он показывает, что я пытаюсь сделать:

      $fields[] = new PMProRH_Field(
    "ahpraregistration",
    "text",
    array(  
    "depends"=>array(array('id' => "regsitrationlevel", 'value' => "holdslimited"||"holdsprovisional")),
            "label"=>"Please Provide Your AHPRA Registration Number",
            'required' => true,
            )
   ));
  

В этом случае я хочу, чтобы текстовое поле отображалось, если выбрано ‘holdslimited’ ИЛИ ‘holdsprovisional’, в настоящее время это будет работать, только если я использую одно значение. Какой формат мне нужно использовать? Как я могу это сделать? Спасибо!

Комментарии:

1.то, что у вас есть сейчас, похоже на условие 'value' => "holdslimited"||"holdsprovisional" или 'value'=>1 песочницу, потому что по крайней мере одна из строк соответствует действительности, результатом является 1 условие. Вы можете проверить это с помощью 'value' => 0||0 — которая возвращает False или пустую песочницу

2. Что касается того, как это сделать, ну, я никогда не слышал об этой PMProRH_Field вещи, но есть замечание, мешающее вам делать это с помощью JavaScript (я буду использовать Jquery), if($('input[name="ahpraregistration"]).val() == 'holdslimited') //do something

Ответ №1:

Я не вижу никаких причин, по которым какой-нибудь простой jQuery не сработал бы.

 (function($){
  $(document).ready(function(){

      function togglefield(){
          if($('select[name="foo"]').val() == 'holdsprovisional'){
              $('input[name="bar"]').css('display','');
          }else{
              $('input[name="bar"]').css('display','none');
          }
      }


      $('select[name="foo"]').change(function(){
          togglefield();
      });
      togglefield();
  });
})(jQuery);  
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<select name="foo" >
  <option value="holdslimited" >holdslimited</option>
  <option value="holdsprovisional" >holdsprovisional</option>
</select><br>
<input name="bar" />  

Вопрос в том, чтобы расширить для меня, чтобы сделать больше, вы, очевидно, можете сделать JS лучше, это было просто для того, чтобы показать, что довольно легко скрыть или показать поле.