|
|
|
Системный suggestion при динамической отправке формы
|
|||
|---|---|---|---|
|
#18+
Допустим, есть простая форма: Код: html 1. 2. 3. 4. 5. Цель - отправить форму динамически, при этом "зацепить" системный suggestion, чтобы при следующих вводах двойным кликом выбрать пару логин/пароль. Юзаю jQuery, к которому есть замечательный плагин jquery.form.js, имеющий на борту две основных функции - ajaxSubmit и ajaxForm (частный случай ajaxSubmit). Как бы я знаю, что сделать то, что я задумал, можно через фрейм, который можно указать в тэге формы и форма будет отправлена через него - такая себе динамическая отправка доAJAXовой эпохи - суперфича начала нулевых. У ajaxSubmit в конфиге можно установить флаг iframe, который позволит так делать. Правда, там оказался маленький "затык" - при установке этого флага даже принудительно установленный дефолтовый enctype "application/x-www-form-urlencoded" превращался в "multipart/form-data", который, в принципе, нужен для отправки файлов. Пришлось изрядно поковыряться в плагине, чтобы выцепить недокументированный флаг конфига skipEncodingOverride, который может отменить изменение способа кодирования данных формы. Но это все лирика, которая поможет тем, кто хочет так сделать, базовых знаний тут может не хватить :) Код: javascript 1. 2. 3. 4. 5. 6. 7. Этого вполне хватает, чтобы Chrome и Firefox успешно сохраняли пару логин/пароль (или другое). Но вот ИЕ ведет себя по-другому: точно также создает фрейм, делает отправку формы, получает данные ... но пару не сохраняет. Потерял на эту фигну прилично времени (правда, "перебрал" jquery.form.js, уменьшив полную версию с 23КБ до 17КБ, с 816 строк до 434), жаль, не обратил сразу внимание на поведение ИЕ, и совершенно нет желания снова окунаться в эту тематику. Возможно, кто-то сталкивался и имеет реализацию задуманного и для ИЕ в том числе (поведение в ИЕ6-7 и Опере совершенно не интересуют). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2012, 22:49:56 |
|
||
|
Системный suggestion при динамической отправке формы
|
|||
|---|---|---|---|
|
#18+
Н-да, а ларчик просто открывался ... Решил все-таки проблему решить. Думаю, раз фактически надо только на странице с логином, то сделаю костыль: при отправке формы через ajaxSubmit передаю json либо с набором ошибок в виде пар {control_id:text}, либо {OK:nextURL}. Во втором случае сделал банальную подмену: Код: javascript 1. с тем, чтобы при правильном ответе сделать переход через открытую отправку формы. Пошло, конечно, но "в лоб". Главное - гарантийно "зацепить" браузерный автокомплит. И каково же было мое удивление, когда и в этом случае автокомплит не сработал. Думал - накрылся мой ИЕ. Все дело в том, что для примера выше я дал примитивненький пример, а сам юзал чуточку сложнее (дизайн, все-таки!): Код: html 1. 2. 3. 4. 5. И для Chrome и Firefox хватило того, что только форма отправляется, а для ИЕ, оказывается, необходим сам факт нажатия на Submit. Таким образом, все решилось простой вставкой "прокси-сабмита": Код: html 1. 2. 3. 4. 5. 6. Сорри, что ввел в заблуждение. Проблема полностью решена и вроде совершенно кроссбраузерно заполняется browser autocomplete при динамической отправке формы. А я уже собирался лезть в недра DWR смотреть, как он отправляет, потому что помню, что делая отправку им, страница не перегружалась, но автокомплит работал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2012, 01:06:54 |
|
||
|
|

start [/forum/topic.php?fid=22&fpage=164&tid=1449644]: |
0ms |
get settings: |
7ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
29ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
23ms |
get tp. blocked users: |
1ms |
| others: | 224ms |
| total: | 306ms |

| 0 / 0 |
