Показать сообщение отдельно
  #13 (permalink)  
Старый 11.12.2012, 11:58
Аватар для mi.rafaylik
Кандидат Javascript-наук
Отправить личное сообщение для mi.rafaylik Посмотреть профиль Найти все сообщения от mi.rafaylik
 
Регистрация: 07.12.2012
Сообщений: 113

Вопрос в продолжение.
1. В myinput вводится кодовое слово.
2. Если совпадение найдено, выполняется действие - в myselect выбирается option 3 (добавляется атрибут selected), а option 2 и 4 блокирует (добавляется атрибут disabled). Всё отлично.
3. Но (! отступление) оба эти элемента находятся в форме myform которая отправляется методом $_POST, и здесь через PHP сервер проверяет правильно ли заполнены поля, и, если неправильно, сервер возвращает форму с сообщением о незаполненных полях.

В случае с input или textarea я просто могу вернуть value с помощью PHP вот так:
<input name="myinput" id="myinput" value='<?php if($_POST["myinput"]) { echo $_POST["myinput"]; } ?>'>

Но с элементом select такое не проходит..
Записать состояние myselect конечно можно и с помощью jQuery cookies:
$(document).ready(function(){
	$('#myselect').change(function(){$.cookie('myselect', $(this).attr('value'));});
});

Но в в этом случае состояние записывается, только если произошёл именно выбор .change (нажатие на этом элементе myselect).
То есть я не могу применить этот метод, если состояние myselect изменено с помощью ввода ключевого слова в myinput, т.к. здесь не было фактического нажатия (выбора) на элементе myselect.
Возможно я что-то упустил, и вместо .change для записи куки нужно использовать что-то другое..

Конечно, как вариант решения - валидировать форму на правильность заполненных полей можно и через jQuery, но в самой форме есть captcha, и тогда получается проблема с сессиями, т.к. без перезагрузки страницы не открывается новая сессия..

Вопрос: Как сохранить состояние myselect (какие option выбраны, а какие блокированы), если состояние этого элемента было изменено без нажатия на него (с помощью другого элемента), после проверки формы и перезагрузки страницы?
Есть мысли по этому поводу?

Напомню структуру формы:
<form name="myform" id="myform">
    <input name="myinput" id="myinput">
    <select name="myselect" id="myselect">
        <option value="1">1</option>
        <option value="2">2</option>
        <option value="3">3</option>
        <option value="4">4</option>
        <option value="5">5</option>
    </select>
</form>

Последний раз редактировалось mi.rafaylik, 11.12.2012 в 13:19. Причина: Добавил структуры самой формы
Ответить с цитированием