контролируйте количество опций в форме выбора

#javascript #php #jquery #forms

#javascript #php #jquery #формы

Вопрос:

У меня есть переменная php $a типа int. Теперь, если $a=1; тогда должны быть видны только первые два параметра, если $a=2; тогда должны отображаться только первые три параметра и так далее. Как я могу этого добиться?

 echo "<form class='form-horizontal'>
        <fieldset  >   
            <span class='control-group' >
            <span  class='controls'>
                <select id='fl' class='form-control' style='cursor:pointer;'>
                    <option " . ($default == 0 ? "selected='selected'" : "") . " style='display:none;' value='0'>Select</option>
                    <option " . ($default == 1 ? "selected='selected'" : "") . " value='1'>Option1</option>
                    <option " . ($default == 2 ? "selected='selected'" : "") . " value='2'>Option2</option>
                </select>

            </span>
        </span>
        <div><button id='mybtn' type='button'>Save</button></div>
        </fieldset>
    </form>";
  

Ответ №1:

Кажется идеальной возможностью для for цикла.

 // put your values into an array for easy access inside the loop
$options = array(
    1 => "Option1",
    2 => "Option2",
    3 => "Option3",
    etc...
);

// output the beginning of the <select> html
echo "<select id='fl' class='form-control' style='cursor:pointer;'>
         <option " . ($default == 0 ? "selected='selected'" : "") . " style='display:none;' value='0'>Select</option>";

// loop through items until we reach our limit, set in $a
for ($i = 1; $i < $a; $i  ) {
    echo "<option " . ($default == $i ? "selected='selected' " : "") . "value='" . $i . "'>" . $options[i] . "</option>";
}

// output the end of the <select> html to close it off
echo "</select>"
  

Ответ №2:

Поместите параметры в переменную на основе $a значения перед echo и используйте эту переменную в echo

 <?php
$options = '';

if($a==1)
{
    $options = "<option " . ($default == 0 ? "selected='selected'" : "") . " style='display:none;' value='0'>Select</option>
                <option " . ($default == 1 ? "selected='selected'" : "") . " value='1'>Option1</option>";
}
else if($a==2)
{
    $options = "<option " . ($default == 0 ? "selected='selected'" : "") . " style='display:none;' value='0'>Select</option>
                <option " . ($default == 1 ? "selected='selected'" : "") . " value='1'>Option1</option>
                <option " . ($default == 2 ? "selected='selected'" : "") . " value='2'>Option2</option>";
}

echo "<form class='form-horizontal'>
        <fieldset  >   
            <span class='control-group' >
            <span  class='controls'>
                <select id='fl' class='form-control' style='cursor:pointer;'>
                    ".$options."
                </select>

            </span>
        </span>
        <div><button id='mybtn' type='button'>Save</button></div>
        </fieldset>

    </form>";
?>
  

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

1. Спасибо.. это сработало, но после использования вашего ответа я придумал немного более элегантное решение:if ($a>=1){echo » «выбранный=’выбранный'» : «») . » значение=’1′>Параметр 1</option>»; если ($a>=2){echo » «выбранный=’выбранный'» : «») . » значение=’2′>Параметр 2</option>»; }}