IE6 + jQuery ошибка, приводящая к самопроизвольному редактированию - PullRequest
1 голос
/ 22 февраля 2011

Я почесал голову на этом.У нас есть страница, и мы используем jQuery и плагин проверки.

У нас есть форма с несколькими входами, каждый из которых регулируется правилами, установленными для плагина проверки.Была обнаружена интересная ошибка - при вводе одного из этих входов, а затем при щелчке мышью по одному из других входов иногда курсор переходит к обычно нередактируемому элементу страницы (например, li или a).этикетка).Затем мы можем свободно печатать, что позволяет тексту появляться не там, где обычно это не происходит.Любопытно, что нажатие клавиши курсора вверх вызывает окно автозаполнения, правильно расположенное по элементу, на котором вы щелкнули.

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

dshosdsdh Это ссылка

Нет встроенных плагинов для редактированияиспользуется на сайте.Эта «функция», похоже, влияет только на IE6, который должен поддерживаться нашими пользователями.

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

1 Ответ

0 голосов
/ 05 июля 2011

Я также сталкивался с такой же проблемой при использовании jquery 1.6.1 и валидации 1.8.1. У меня есть пользовательские сообщения об ошибках, которые вставляются перед полем ввода под меткой, и проверка выполняется, когда фокус теряется на поле.

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

$(yourform).validate({
    onfocusout: function(element){$(element).valid();},
    errorPlacement: function(error, element) {
        setTimeout(function (){
            //....custom error placement code
        }, 50);
    }
});

Я думаю, что проблема как-то связана с тем, как индексы IE6, и вставка, кажется, сбивает с толку, где указатель индекса находится для следующего поля ввода, если сообщение об ошибке вставляется до перефокусировки. Таким образом, IE6 помещает курсор в неправильное место, думая, что он находится в следующем выбранном вами поле ввода, что позволяет свободно печатать на странице.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...