Переключатель переключается на статус по умолчанию при обновлении страницы с помощью PHP
У меня есть ситуация, когда есть 5 переключателей, одна из которых по умолчанию проверяется на открытой странице. Эти переключатели представляют 5 категорий. В каждой категории есть несколько кнопок отправки в подкатегории. Кнопки подкатегории скрыты, за исключением кнопок в категории, которая в данный момент выбрана переключателем.
Я хочу, чтобы пользователи могли выбирать категорию с помощью переключателя, а затем выбрать одну из подкатегорий, но при обновлении страницы (из запроса $_POST) я хочу, чтобы переключатель категории "текущая" оставался отмеченным. В текущем состоянии страница обновляется с отправкой в подкатегорию, и радио по умолчанию устанавливается на первую категорию переключателей.
У меня есть javascript, координирующий действие контейнера скрытия радио, поэтому теги формы должны охватывать все пять переключателей, и все пять переключателей имеют одинаковое имя, которое нельзя изменить из-за моего базового JavaScript. Так что я не могу просто изменить название и код каждого радио в PHP соответственно с сеансами и тому подобное.
Я фактически получил категорию, чтобы остаться при отправке $_POST, используя переменную сеанса в теге радиосвязи, где вы найдете флажок, но мне пришлось инкапсулировать каждую радиостанцию и соответствующий раздел подкатегории в свои теги формы. Это вызывает проблемы с javascript, конечно, и переключатели, после нажатия, не смогут быть нажаты снова.
Есть ли способ решить эту проблему с помощью php?
Любая помощь будет хорошей. Заранее спасибо.
1 ответ
Я должен был сделать это с классами, это немного громоздко. При загрузке страницы вытяните проверенное значение элемента в переменную (в данном случае $val). и иметь эту строку для каждого элемента ввода:
<input type="radio" ... value="someval" <?php $x = ($val=='someval' ? 'checked="checked"' : ''); echo $x; ?> />
Как я уже сказал, громоздко, но проверяет правильность пункта. Единственное, что вашему первому элементу понадобится еще логика if, поскольку по умолчанию будет проверяться, если значение не выбрано.
<input type="radio" ... value="firstval" <?php $x = ((empty($val)) || ($val=='firstval')) ? 'checked="checked"' : ''); echo $x; ?> />
Вы можете сделать это при необходимости, это было только для встроенного.