PHP - если выпадающий выбор = что-то - PullRequest
0 голосов
/ 27 октября 2011

Как мне создать условный оператор на основе выбора раскрывающегося списка?

Допустим, у нас есть раскрывающийся список с записями:

Alpha
Bravo
Charlie
Other

Я хочу создать условный списокоператор, где, если Other является выбранной в данный момент записью из выпадающего меню, я хочу повторить новую строку с указанием If Other, Please Specify.Но если это не выбранная в данный момент запись, я не хочу, чтобы эта строка заполнялась.

Ответы [ 2 ]

4 голосов
/ 27 октября 2011

В PHP

<select id="conditions" name="conditions">
    <option></option>
<?php
foreach($option in $optionList){
    echo "<option value=$option ";
    if($_REQUEST["conditions"] == $option){
        echo  'selected="selected"';
    }
    echo " > $option </option>";
}
echo "</select>";

if($_REQUEST["conditions"] == "Other"){
    echo '<div id="specify" style="display:block">If Other, Please Specify</div>';
}else{
    echo '<div id="specify" style="display:hidden">If Other, Please Specify</div>';
}
?>

В jQuery для клиентской стороны

<script>
    $('#conditions').change(function(){
        if($(this).val() == "Other"){
            $('#specify').show();
        }else{
            $('#specify').hide();
        }
    });
</script>
3 голосов
/ 27 октября 2011

Как уже говорилось в комментариях, вы должны сделать это в javascript.Следующая функция должна это сделать.

Включите этот javascript либо внутри элемента <script> страницы, либо внутри вашего файла javascript:

function checkSelect(selId, text, outputDiv) {
  var sel = document.getElementById(selId);
  var d = sel.options[sel.selectedIndex].text;
  if (d == text) {
    document.getElementById(outputDiv).innerHTML = "If Other, Please Specify";
  } else { 
    document.getElementById(outputDiv).innerHTML = "";
  }
}

Затем настройте свой HTML для запуска этой функции при изменении раскрывающегося списка:

<select id='Sel1' onchange='check("Sel1", "Other", "DivReqDetails");'>
  <option value='Alpha'>Alpha</option>
  <option value='Bravo'>Bravo</option>
  <option value='Charlie'>Charlie</option>
  <option value='Other'>Other</option>
</select>
<div id='DivReqDetails'></div>

Редактировать: если у вас есть доступ к jQuery, вы можете сделать checkSelect() более мощным, выполнив не только настройку содержимого div (как вы можете легко настроить CSS для таких вещей, какdisplay:hidden; против display:block;, а также цвета. Вот пример этого, если у вас есть поддержка jQuery.

Я также добавляю некоторые улучшения, позволяющие вам отправлять нужный текст этомуфункция (чтобы вы могли проверить несколько полей и соответственно отобразить различный текст):

function checkSelect(selId, text, outputDiv, outputText) {
  if ($("#"+selId).text() == text) {
    $("#"+outputDiv).html(outputText).css("display","block").css("color","red");
  } else { 
    $("#"+outputDiv).html("").css("display","none").css("color","black");
  }
}

Или, если у вас есть несколько из этих предупреждений для отображения в разных частях формы, вы можете изменить вещи на основена класс CSS вместо отдельного элемента. Обратите внимание, что это изменит ВСЕ предупреждающие дивы, поэтому, если вы ищете обратную связь для каждого поля, это не такидти ...

function checkSelect(selId, text, outputCssClass, outputText) {
  if ($("#"+selId).text() == text) {
    $("."+outputCssClass).html(outputText).css("display","block").css("color","red");
  } else { 
    $("."+outputCssClass).html("").css("display","none").css("color","black");
  }
}

Очевидно, вы можете отрегулировать, какие изменения вносятся в любом из условий.Если у вас никогда нет причин корректировать отображаемый текст, вам следует полностью удалить часть .html().Точно так же, если вы когда-либо показываете этот div, только когда цвет красный, отбросьте эту настройку и просто жестко запрограммируйте стиль, который вы хотите.Вы можете изменить любые другие атрибуты css для связанных элементов, используя аналогичные вызовы .css()

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