Мешайте плагину автоматического заполнения jQuery забыть текст, когда пользователь нажмет назад

Поскольку вы не пометили ни одной СУБД , я бы использовал row_number():

select t.*
from (select product, productno, sum(count) as cnt,
             row_number() over (partition by product order by sum(count) desc) as seq
      from table t
      group by product, productno
     ) t
where seq = 1;

Вы также можете использовать предложение LIMIT (но не для каждого продукта) :

select product, productno, sum(count) as cnt
from table t
group by product, productno
order by cnt desc
limit 1; 

Для некоторых других СУБД требуется предложение TOP вместо предложения LIMIT, поэтому вы можете изменить соответствующим образом, но идея будет такой же.

9
задан Glenn Slaven 14 January 2009 в 00:48
поделиться

5 ответов

Хорошо я нашел проблему. Это, кажется, находится на Firefox, не IE, и это не происходит технически из-за плагина автоматического заполнения. Это - потому что плагин добавляет атрибут autocomplete="off" к текстовому полю.

Это - то, так, чтобы история автоматического заполнения браузера не конфликтовала с автоматическим заполнением jQuery, но в Firefox, поля, которые имеют этот атрибут, не становятся преднаселенными, когда пользователь нажимает кнопку "Назад".

Я предполагаю, что нет пути вокруг этого, это, кажется, поведение браузера по умолчанию. Если кто-либо знает отличающийся, добавьте комментарий.

9
ответ дан 4 December 2019 в 10:34
поделиться

Это - на самом деле ПЛОХОЕ поведение IE, функция "запоминания" должна быть сделана с помощью серверного языка.

Некоторые из них (ASP.NET) делают это автоматически, если Вы не сказали не.

С PHP необходимо использовать, ДОБИРАЮТСЯ или POST супер-Вар.

Если Вы не используете серверного языка, можно использовать JavaScript, чтобы получить доступ к ПОЛУЧЕНИЮ querystring и передать некоторые параметры между страницами, что параматери могут использоваться, чтобы получить значение текстового поля и затем предварительно заполнить его.

-3
ответ дан 4 December 2019 в 10:34
поделиться

в $.autocompleter функция на плагине там является названной переменной previousValue в строке 72 из распакованной версии jquery.autocomplete.js. Эта переменная установлена на пустую строку на инициализации.

Если Вы чувствуете себя амбициозными, Вы могли бы попытаться редактировать этот сценарий и иметь, если проверка, если текстовое поле уже имеет значение и набор previousValue к нему, если это делает.

2
ответ дан 4 December 2019 в 10:34
поделиться

Сегодня у меня была такая же проблема, и я нашел способ ее обойти.

$("#search_form").submit(function() {
    $("#location")[0].removeAttribute("autocomplete");
});

Этот код удаляет атрибут автозаполнения непосредственно перед отправкой формы. Вам нужно будет изменить селекторы, чтобы они соответствовали вашей форме и входным данным.

12
ответ дан 4 December 2019 в 10:34
поделиться

Ни одно из опубликованных решений не помогло мне, поскольку мое приложение с высокой степенью управления AJAX просто кэшировалось в своем последнем известном состоянии перед тем, как покинуть страницу (с autocomplete = "off"), и когда пользователь использовал кнопку «Назад», браузер правильно не вставлял предыдущее значение в поле поиска (поскольку автозаполнение атрибута было отключено). Таким образом, единственным решением в этом случае было запустить мой JS, и для этого мне пришлось предотвратить кеширование. Я обнаружил, что этот простой фрагмент хорошо работает. Просто вставьте его на свою главную страницу (которую пользователь покинет при нажатии на любую из ссылок), и вы должны хорошо предотвратить кеширование. Затем используйте JS для заполнения всех желаемых значений, включая значение поля автозаполнения.

  window.onbeforeunload = function () {
    // Empty function, but it prevents the browser caching this anyway!
  }
0
ответ дан 4 December 2019 в 10:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: