Как отобразить скрытое значение в форме на основе выбора? - PullRequest
0 голосов
/ 05 октября 2010

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

<select name='Time_Available'>
            <option value="" selected='true'>Any</option>
            <option value='<?php echo date('Y/m/d', strtotime('+30 days')) ?>'>30 days</option>
            <option value='<?php echo date('Y/m/d', strtotime('+60 days')) ?>'>60 days</option>
            <option value='<?php echo date('Y/m/d', strtotime('+90 days')) ?>'>90 days</option>
            </select>

Хотя, когда форма отправлена, если выбрана опция «Любой», я бы хотел добавить это в форму:

<input type='hidden' name='Model' value='Yes' />

Для остальных вариантов (30, 60, 90 дней) я просто хочу, чтобы он отправлялся регулярно без вышеуказанной части.

Я пытался обойти это, добавив &Model=Yes к значению «Любой», хотя амперсанд облажался. Есть ли какой-либо javascript или jQuery, которые я могу добавить, чтобы решить эту проблему?

Ответы [ 2 ]

0 голосов
/ 09 октября 2010

jQuery может сделать это за пять секунд. Есть несколько более сложных способов добавления входных данных на страницу, но я настоятельно рекомендую просто поместить их в HTML без вмешательства JS:

<input id="Model" type="hidden" name="Model" value="Yes" disabled="disabled" />

Тогда вы просто делаете это.

$("select").change(function () {
   if ($(this).val() == 'Any') {
      $("#Model").attr('disabled', '');
   }
   else {
      $("#Model").attr('disabled, 'disabled');
   }
});

Обратите внимание, что если по умолчанию выбрано значение «Любой», вы не хотите изначально отключать модель по понятным причинам.

Кстати, меня немного смущает вопрос, зачем вам нужна дополнительная проверка, если вы уже проверяете значение выбора. Вместо проверки скрипта Model == Да, почему бы просто не проверить Time_Available == Any?

Наконец, вы не можете добавить строку запроса так, как вы ее описали (просто добавление & к таким значениям не сработает). Амперсанд будет закодирован автоматически. Если бы пользователи могли просто добавить в строку запроса все, что им нравится, это было бы кошмаром пользовательского интерфейса.

0 голосов
/ 05 октября 2010

Это не сложно.

Добавьте скрытый ввод в форму и измените его в следующем:

<select name='Time_Available' onchange="this.form.Model.disabled=(this.options.selectedIndex)? true:false">

Если выбранная опция изменяется, а новая выбранная опция непервый, get отключен.

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