Как работает form.reset ()? - PullRequest
       4

Как работает form.reset ()?

8 голосов
/ 08 ноября 2010

Я знаю, что form.reset() сбросит все поля формы к значениям по умолчанию, но как это работает?

Это реализация DOM браузера? т. е. браузер знает, какие были последние значения, отправленные с сервера в последнем постбэке / получении, и когда вызывается reset(), браузер сбрасывает эти значения.

Ответы [ 2 ]

8 голосов
/ 08 ноября 2010

Спецификация DOM сообщает нам , что она:

... выполняет то же действие, что и кнопка сброса.

И так далеев HTML.В соответствии с последней спецификацией (все еще черновик!):

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

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

И сброс "Алгоритм "для input элементов (например) таков:

... чтобы установить флаг грязного значения и флаг грязной проверки обратно в ложное значение, установить значение элемента равнымзначение атрибута содержимого значения, если оно есть, или пустая строка в противном случае, задайте для элемента checkness элемента значение true, если у элемента есть проверенный атрибут содержимого, и значение false, если его нет, очистите список выбранных файлов, а затемвызовите алгоритм очистки значения, если текущее состояние атрибута типа определяет его.

Таким образом, reset устанавливает значение входного значения в текущее значение его "value" attribute (theElement.getAttribute("value")), который может отличаться от его текущего value свойства (theElement.value). Живой пример здесь.

Редактировать : Оооо, Пекка указывает нам на defaultValue.Очень круто, я бы лучше использовал это, чем getAttribute("value"). Пересмотренный живой пример.

4 голосов
/ 08 ноября 2010

reset будет использовать значения в текущем исходном коде HTML. Браузер ничего не знает о последнем запросе в этом запросе (это было бы серьезным нарушением безопасности).

Если форма содержит следующие элементы:

<form action="xyz">
    <input type="text" name="fieldA" />
    <input type="text" name="fieldB" value="Thingy" />
    <input type="reset" value="Click me to undo everything" />
    <input type="button" onclick="this.form.reset()" value="Click me too" />
</form>

Обе кнопки опустят первое поле и установят значение второго поля на Thingy.

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