Почему флажки / радиокнопки и опции не сбрасываются, если они были установлены PHP? - PullRequest
2 голосов
/ 09 марта 2009

Работа с XHTML 1.1

У меня есть эта страница входа в php. Он содержит несколько флажков, радиокнопок и выпадающий список.

За этим стоит много проверок, и если что-то не получается, страница перезагружается и все значения возвращаются на свои места, кроме паролей.

Это означает, что выбранные элементы <select>, <input type="radio" и <input type="checkbox" переизбраны.

Тем не менее, когда я смотрю на исходный код, фрагменты checked="checked" и selected="selected" отсутствуют. Но, учитывая то, как они были выбраны на перезагруженной странице, они должны быть реализованы.

Тем не менее, когда я нажимаю кнопку <input type="reset", ничего не происходит. Не выбрано.

Забавно, что когда я выбираю некоторые другие флажки, радиокнопки и меняю выбор, сброс работает, но только на вновь выбранных флажках и радиокнопках.

Еще более странным является тот факт, что когда я нажимаю кнопку сброса, переключатели, флажки и селекторы не очищаются, они возвращаются к тому, который был отмечен или выбран, когда PHP заставил страницу перезагрузиться.

Что здесь происходит?

Кстати, используя Firefox, теперь проверяем IE.

РЕДАКТИРОВАТЬ: IE та же проблема.

Ответы [ 4 ]

2 голосов
/ 09 марта 2009

Если вы используете «Просмотр исходного кода» и сценарий устанавливает агрессивные no-cache заголовки, возможно, вы не видите исходный код того, что отображается. Попробуйте что-нибудь, что показывает живой DOM, например Firebug или DOM Inspector.

1 голос
/ 09 марта 2009

Если в вашем коде после перезагрузки PHP отсутствуют атрибуты флажок = проверен и выбран = выбран, то единственное объяснение их появления в действительности заключается в том, что ваш браузер запомнил их значения и восстановил их. Это, вероятно, также объясняет остальное поведение. Я бы посоветовал убедиться, что код PHP правильно генерирует отмеченные / выбранные атрибуты, а остальное должно позаботиться о себе.

0 голосов
/ 09 марта 2009

Я не уверен, что причина всех ваших проблем, но я дам вам краткое описание того, как работает метод сброса формы по умолчанию для javascripts.

Скажем, у вас есть следующая форма:

<form id="myForm>
    <input type="text" name="textField1" value="" />
    <input type="text" name="textField2" value="test1" />
    <input type="text" name="textField3" value="test2" />

    <input type="checkbox" name="checkbox1" value="box1" />
    <input type="checkbox" name="checkbox2" value="box2" checked />
</form>

А в textField1 вы кладете Foo И в textField2 вы ставите Бар А в textField2 ставишь Баз

А потом вы снимаете оба флажка. Затем сбросьте форму

myForm.reset();

Поля формы теперь будут иметь следующий вид:

textField1 = "" = "поля 2 test1" = "поля 3 test2"

checkbox1 = НЕ проверено checkbox2 = проверено

Что происходит, если метод сброса не «очищает» форму, возвращающую ему все значения по умолчанию для формы.

Надеюсь, это немного поможет.

0 голосов
/ 09 марта 2009

(Какой браузер?)

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

Также есть обновление (например, F5) и «реальное» обновление (Ctrl-F5), которое всегда полностью сбрасывает страницу.

...