powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Системный suggestion при динамической отправке формы
2 сообщений из 2, страница 1 из 1
Системный suggestion при динамической отправке формы
    #37852545
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Допустим, есть простая форма:
Код: html
1.
2.
3.
4.
5.
<form id="ourForm" action="/somewhere_out_there" method="POST">
    <input type="test" name="login"/>
    <input type="password" name="password"/>
    <input type="submit" value="Login"/>
</form>


Цель - отправить форму динамически, при этом "зацепить" системный 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.
$(document).ready(function(){
    $("#ourForm").submit(function(event){
        //some actions
        $(this).ajaxSubmit({success:loginFormHandler, dataType:"json", iframe:true, skipEncodingOverride:true, error:function(){}});
        return false;
    });
});


Этого вполне хватает, чтобы Chrome и Firefox успешно сохраняли пару логин/пароль (или другое). Но вот ИЕ ведет себя по-другому: точно также создает фрейм, делает отправку формы, получает данные ... но пару не сохраняет. Потерял на эту фигну прилично времени (правда, "перебрал" jquery.form.js, уменьшив полную версию с 23КБ до 17КБ, с 816 строк до 434), жаль, не обратил сразу внимание на поведение ИЕ, и совершенно нет желания снова окунаться в эту тематику. Возможно, кто-то сталкивался и имеет реализацию задуманного и для ИЕ в том числе (поведение в ИЕ6-7 и Опере совершенно не интересуют).
...
Рейтинг: 0 / 0
Системный suggestion при динамической отправке формы
    #37854132
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Н-да, а ларчик просто открывался ... Решил все-таки проблему решить. Думаю, раз фактически надо только на странице с логином, то сделаю костыль: при отправке формы через ajaxSubmit передаю json либо с набором ошибок в виде пар {control_id:text}, либо {OK:nextURL}. Во втором случае сделал банальную подмену:
Код: javascript
1.
$("#ourForm").unbind("submit").attr("action", result.OK).submit();


с тем, чтобы при правильном ответе сделать переход через открытую отправку формы. Пошло, конечно, но "в лоб". Главное - гарантийно "зацепить" браузерный автокомплит. И каково же было мое удивление, когда и в этом случае автокомплит не сработал. Думал - накрылся мой ИЕ.

Все дело в том, что для примера выше я дал примитивненький пример, а сам юзал чуточку сложнее (дизайн, все-таки!):
Код: html
1.
2.
3.
4.
5.
<form id="ourForm" action="/somewhere_out_there" method="POST">
    <input type="test" name="login"/>
    <input type="password" name="password"/>
    <a href="/anybody" class="my_complex_style" onclick="$('#ourForm').submit(); return false">Send</a>
</form>


И для Chrome и Firefox хватило того, что только форма отправляется, а для ИЕ, оказывается, необходим сам факт нажатия на Submit. Таким образом, все решилось простой вставкой "прокси-сабмита":
Код: html
1.
2.
3.
4.
5.
6.
<form id="ourForm" action="/somewhere_out_there" method="POST">
    <input type="test" name="login"/>
    <input type="password" name="password"/>
    <input type="submit" class="hidden_element" id="hiddenSubmitButton"/>
    <a href="/anybody" class="my_complex_style" onclick="$('#hiddenSubmitButton').click(); return false">Send</a>
</form>


Сорри, что ввел в заблуждение. Проблема полностью решена и вроде совершенно кроссбраузерно заполняется browser autocomplete при динамической отправке формы. А я уже собирался лезть в недра DWR смотреть, как он отправляет, потому что помню, что делая отправку им, страница не перегружалась, но автокомплит работал.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Системный suggestion при динамической отправке формы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]