Ответ 1
Jquery Validate в настоящее время не работает с jQuery 1.6 в IE6, IE7 и IE8.
UPDATE: Я создал новый проект MVC 3 с Razor HTML 5, затем я обновил проект с помощью NuGet в JQuery 1.6, и плагин проверки не работает больше, он делает сообщение каждый раз и возвращает сообщение об ошибке из сервер. Я думаю, что плагин проверки не работает с JQuery 1.6
У меня есть приложение MVC 3, которое использует диалоговое окно JQuery UI (загруженное из частичного представления, которое содержит форму), чтобы отправить информацию на ajax на сервер. Я хочу инициировать проверку моей формы на стороне клиента, прежде чем я сделаю сообщение 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??
Jquery Validate в настоящее время не работает с jQuery 1.6 в IE6, IE7 и IE8.
У меня были проблемы с jquery.validate.js в IE7/IE8. После отладки я заметил, что следующая строка вызывала проблему (ln 436 в версии 1.7):
return $([]).add(this.currentForm.elements)
.filter(":input")
Замените эти две строки чем-то вроде:
return $(':input', this.currentForm)
Это помогло мне.
Попробуйте переключиться на неминифицированную версию:
Минимальная версия jQuery 1.6, похоже, не работает корректно в IE7, режиме совместимости IE8 и режиме совместимости IE9. Переход на не-miinified работал у меня.
http://bugs.jquery.com/ticket/9365
Удачи!
Вместо этого:
if (myform.valid())
сделайте следующее:
if (myform.validate().form())
Надеюсь, это поможет. Приветствия
В IE7,8 есть некоторые ошибки в attr(), которые, надеюсь, будут исправлены в следующей версии.
Возможно, команда jQuery сделала правильную вещь при изменении attr(), но изменения действительно испортили работу.
И это определенно означает остановку показа для обновления.
Он тоже не работает на IE9. Возвращаясь к jQuery-1.5.1, я решил проблему. Вы можете запустить команду NuGet "Install-Package jQuery -version 1.5.1" для отката.
У меня была аналогичная ситуация, когда каждая проверка достоверна в IE8, когда я использовал JQuery 1.6.2, JQuery.Validate 1.8 и Jquery.Validate.Unobtrusive; но он работает в FireFox
В настоящее время я создаю сайт, на котором люди могут входить с любой страницы. Мой дизайн заключается в том, что родительская страница использует JQuery.Load(url) для загрузки моей дочерней страницы (входа) в JQuery Dialog. Моя родительская страница не содержит диалогового окна 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 работает.
Не лучшее решение, однако, добавление следующего метатега в раздел заголовка страницы поможет отключить режим совместимости:
< meta http-equiv =" X-UA-Compatible "content =" IE = edge " >
Убедитесь, что плагин jQuery-Validate также обновлен. Вы должны использовать версию 1.8.0. 1 для jQuery-Validate. Имя пакета NuGet - jQuery.Validation.
У меня была такая же проблема с использованием 1.6.
Обновлен jquery.validate до последнего, и это не имело значения.
Обновлен jquery до 1.7, и он исправил его.
Я попробовал много ответов здесь без успеха. В конце концов, я обнаружил, что мне нужно обновить библиотеку jquery.validate
до версии 1.9. Я знаю, что я искал это раньше, но не смог найти его, поэтому я написал это небольшое сообщение в блоге о том, как найти последнюю версию и исправить эту проблему: