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 на документ, готовый как функция. Что автозаполнение уже проверило, есть ли какие-либо формы на странице для автозаполнения. В котором, если это так, браузеры автозаполнения функциональность может просто работать до вашего документа готового материала. Что, если это окажется правдой.. Эта публикация может помочь вам на правильном пути

событие изменения триггера автозаполнения jQuery