JQuery 1.6 $ ('form'). Validate () не работает в IE7 и IE8 - PullRequest
18 голосов
/ 06 мая 2011

ОБНОВЛЕНИЕ : я создал новый проект MVC 3 с Razor HTML 5, затем я обновил проект с NuGet на JQuery 1.6, и плагин проверки больше не работает, он работаетсообщение возвращается каждый раз и возвращает сообщение об ошибке с сервера.Я думаю, что плагин проверки не работает с JQuery 1.6

У меня есть приложение MVC 3, которое использует диалоговое окно Jquery UI (загруженное из частичного представления, которое содержит форму) для отправки информации черезАякс на сервер.Я хочу инициировать проверку моей формы на стороне клиента, прежде чем я сделаю пост Ajax.В Firefox и IE9 работает нормально, в IE7 и IE8 form.validate () всегда возвращает true.

Вот код js, прикрепленный к моей кнопке отправки:

    var wizard = $("#wizard"); //div that holds the modal dialog
    var myform = $("#wizard form");

    var submitFunction = function (e) {
        e.preventDefault(); //no postback
        myform.validate();
        if (myform.valid()) {
            $(this).attr("disabled", "disabled");
            submited = true;
            $.post(
                "SuperAdmin/CreateEditController",
                $(this).serialize(),
                function (data) {
                    if (data.Success) {
                        wizard.dialog('destroy');
                    }
                    else {
                        wizard.html(data.Html);
                    }
                },
                "json"
            ); //end json post
        }
    };
myform.submit(submitFunction);

Я используюк ним относятся следующие:

<script src="@Url.Content("~/Scripts/jquery-1.6.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")" type="text/javascript"></script>

Плагин JQuery Validation был обновлен с помощью NuGet версии 1.8.0 и библиотеки JQuery до 1.6.

Обновление : я проверялкод, сгенерированный с шаблоном скаффолдинга по умолчанию, и он делает то же самое, без проверки на стороне клиента.Может быть, JQuery 1.6 не совместим с шаблоном Razor? ??

Ответы [ 11 ]

19 голосов
/ 11 мая 2011

Проверка Jquery в настоящее время не работает с jQuery 1.6 в IE6, IE7 и IE8.

https://github.com/jzaefferer/jquery-validation/issues/105

5 голосов
/ 21 января 2012

У меня были проблемы с jquery.validate.js в IE7 / IE8. После отладки я заметил, что следующая строка вызывает проблему (ln 436 в версии 1.7):

return $([]).add(this.currentForm.elements)
            .filter(":input")

Замените эти две строки чем-то вроде:

return $(':input', this.currentForm)

Это помогло мне.

3 голосов
/ 25 мая 2011

Попробуйте переключиться на не минимизированную версию:

Сокращенная версия jQuery 1.6, похоже, не работает правильно в IE7, режиме совместимости IE8 и режиме совместимости IE9. Переход на non-miinified работал для меня.

http://bugs.jquery.com/ticket/9365

Удачи!

1 голос
/ 02 марта 2012

Однако не лучшее решение, добавление следующего метатега в раздел заголовка страницы поможет отключить режим совместимости:

<meta http-equiv="X-UA-Compatible" content="IE=edge" >
1 голос
/ 14 августа 2011

У меня была похожая ситуация, когда каждая проверка истинна в IE8, когда я использовал JQuery 1.6.2, Jquery.Validate 1.8 и Jquery.Validate.Unobtrusive;но это работает в FireFox

В настоящее время я создаю веб-сайт, где люди могут войти с любой страницы.Мой дизайн таков, что родительская страница использует JQuery.Load (url) для загрузки моей дочерней страницы (логин) в диалог JQuery.Моя родительская страница не содержит диалог JQuery;дочерняя страница (логин) содержит диалог.Так как дочерняя страница является частичной страницей, она не включала в себя всю основную информацию HTML

Пример HTML, отсутствующего на моей дочерней странице:

<html>
   <title></title>
   <body>
   </body>
</html>

Я пришел выяснить это путем тестированиядочерняя страница (вход в систему) независимо от родительской страницы, что IE имеет проблемы с JQuery Dialog и JQuery Validation, когда нет элемента body.

Я создал пример jsFiddle (см. ссылку ниже).Если вы проверяете этот пример в IE 8, проверка не работает, но если вы проверяете его в FireFox, проверка работает.В примере jsFiddle я включил элемент body, но IE8 все еще имеет проблемы.Когда я просматриваю источник jsFiddler, я не могу найти какие-либо элементы тела и считаю, что это усугубляет проблему в jsFiddler.Если я запускаю код на моем компьютере и включаю элемент body, то обе версии IE8 и Firefox работают.Если я удаляю элемент body, IE8 не работает, а FireFox работает.

http://jsfiddle.net/BarDev/aRj64/

1 голос
/ 18 мая 2011

Это не работает на IE9 для меня тоже.Откат к jQuery-1.5.1 устранил проблему для меня.Для отката можно запустить команду диспетчера пакетов NuGet «Install-Package jQuery -version 1.5.1».

1 голос
/ 08 мая 2011

Есть некоторые ошибки, связанные с attr () в IE7,8, надеюсь, они будут исправлены в следующем выпуске.

Возможно, команда jQuery сделала правильные изменения в attr (), но эти изменения действительно разрушают работу каждого.

И это определенно шоу-стопер для апгрейда.

1 голос
/ 06 мая 2011

Вместо этого:

if (myform.valid()) 

сделать это:

if (myform.validate().form()) 

Надеюсь, это поможет. Приветствия

0 голосов
/ 16 января 2012

Я попробовал много ответов здесь безуспешно.В итоге я обнаружил, что мне нужно обновить библиотеку jquery.validate до версии 1.9 .Я знаю, что искал это ранее, но не смог найти его, поэтому я написал небольшой пост в блоге о том, как найти последнюю версию и исправить эту проблему:

Проверка Jquery не работает в ie7и т.е 8

0 голосов
/ 19 декабря 2011

У меня была такая же проблема при использовании 1.6.

Обновлен jquery.validate до последней версии, и это не имеет значения.

Обновлен JQuery до 1,7, и это исправлено.

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