jqGrid edit forms теряет функцию автоматического заполнения браузера
Я недавно отвечал на этот вопрос: jqGrid edit form autocomplete= "off"по умолчанию, как изменить на autocomplete="on" потому что я заметил, что по умолчанию форма редактирования jqGrid дала всем входным элементам . Я думал, что это причина, по которой веб-браузер не будет реализовывать обычную функцию автоматического заполнения для форм редактирования jqGrid. После исправления этой проблемы и создания всех входных элементов есть autocomplete="on"
атрибут, все еще нет автоматическое заполнение форм редактирования jqGrid.
кто-нибудь знает, почему автозаполнение не работает для этих форм? Формы отправляются через ajax, поэтому я не уверен, влияет ли это на него или нет.
просто для ясности, я не про jQuery autocomplete()
. Я говорю о современном веб-браузере (Chrome, FF), встроенном в функциональность автозаполнения формы.
например, перейдите в мою форму примера jsfiddle здесь. Вы можете заполнить форму с чем угодно, Затем нажмите кнопку submit
. Обновите страницу и заполните ее снова. Ваш браузер должен иметь вспомнил и предложил значения только что заполнены в первый раз. Вот что происходит со мной.
С другой стороны, если вы перейдете к примеру редактирования jqGrid здесь. Выберите строку и нажмите маленькую кнопку редактирования (выглядит как карандаш). Вы не можете изменить первое поле, но вы можете изменить другие месторождения. Поместите все, что хотите, в другие поля и нажмите submit
. Обновите страницу еще раз. То, что я испытываю от многих компьютеров и как FF, так и Chrome, заключается в том, что эта форма делает не помню любой из прошлых записей.
это проблема, вы испытываете то же самое? Если да, то знаете ли вы, Можно ли сделать эти формы jqGrid совместимыми с функциями автоматического заполнения браузера?
спасибо!
2 ответов
хотя все браузеры обрабатывают хранение и автозаполнение полей формы несколько по-разному, все они полагаются на форму, отправляемую для хранения значений самих полей формы. Поскольку jqGrid обрабатывает формы через AJAX (кнопка обновления-это ссылка, а не кнопка отправки), сами формы никогда не отправляются, что, в свою очередь, никогда не позволяет браузеру хранить значения полей для последующего использования через автозаполнение.
один метод принуждать браузер для хранения значений полей должен создать <iframe />
клон <form />
добавить клонированный <form />
на <iframe />
и отправьте его как часть процесса отправки формы AJAX.
возьмите, например, эту измененную версию вашего JSFiddle.
в приведенном выше примере заполните "стандартную форму" и отправьте, перезагрузите страницу, и поля будут заполнены автоматически, как ожидалось. Заполните "форму AJAX" и отправьте, перезагрузите страницу и поля не будут завершаются автоматически. Наконец, заполните форму "AJAX + iFrame" и отправьте, перезагрузите страницу, и поля теперь должны быть автозаполнены.
*Примечание: приведенный выше пример был протестирован на Chrome, Safari и Firefox. Ваш пробег может варьироваться.
для полноты, вот код relavent:
$('#iframe_submit').bind('submit', function(e){
e.preventDefault(); // Prevents Standard Submit
// Do AJAX Stuff Here...
// Create Clone of Form, Append to iFrame and Trigger Submit
// This Forces Autocomplete to Register
var $clone = $('#iframe_submit').clone();
$clone.attr('id', 'iframe_clone'); // Only One ID Allowed
$('<iframe />').appendTo('body').contents().find('body').append($clone);
$('iframe').contents().find('#iframe_clone').submit();
});
надеюсь, это поможет!
хотя имеет некоторый код для просмотра из вашей проблемы точно. Я собираюсь перейти к предположению, что это вполне возможно из-за ограничения браузера, в зависимости от браузера. Но также. Это может быть одна из немногих вещей. Либо ваши элементы формы не завернуты в <form></form>
tag, и, таким образом, браузеры с поддержкой автозаполнения не могут подобрать элементы, которые вы хотите иметь автозаполнение.
2 вы используете неясные имена для своих элементов. Обычно автозаполнение включено браузеры ищут обычно используется форма элемента именами, например: имя, имя, имя, адрес электронной почты, имя пользователя, street1, street_one.. и так далее.
3 это вполне возможно, если ваша загрузка сетки динамически через javascript на документ, готовый как функция. Что автозаполнение уже проверило, есть ли какие-либо формы на странице для автозаполнения. В котором, если это так, браузеры автозаполнения функциональность может просто работать до вашего документа готового материала. Что, если это окажется правдой.. Эта публикация может помочь вам на правильном пути