0

Я использую плагин проверки jQuery - v1.11.1 и jquery 1.10.2, но ниже код не работает в IE 8. Он отлично работает в IE9 и выше а также в других браузерах, таких как Chrome.jQuery Validation plugin version 1.11.1 не работает в Explorer 8

<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server"> 
    <script src="Scripts/jquery_validate.min.js"></script> 
    <script type="text/javascript"> 
     $(document).ready(function() { 
      $('#btn').click(function() {     
       $("#form1").validate({      
        rules: { 
         <%= txt.UniqueID %>: "required" 
        }, 
        messages: { 
         <%= txt.UniqueID %>: "Please enter QTY" 
        }          
       }); 
      }); 
     });  
    </script> 
</asp:Content> 
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server"> 
    ID 
    <asp:TextBox runat="server" ID="txt" ClientIDMode="Static" /> 
    <asp:Button Text="Test" runat="server" ID="btn" ClientIDMode="Static" />  
</asp:Content> 

EDITED:.

Поэтому я завернул Validate() в $ ('# BRN') Нажмите (функцию() {}) событием является то, что у меня есть еще один Postback из GridView RowCommand Событие. Есть ли другой способ вызвать jquery validate() только при нажатии кнопки?

+0

вы пробовали ограждающих '<% = txt.UniqueID%>' в кавычки? –

+0

Я вижу подобную проблему здесь, но похоже, что у вас есть новая версия? http://stackoverflow.com/questions/5942327/jquery-validation-not-working-in-ie7-ie8. – christiandev

+0

Вы неправильно понимаете, что делает '.validate()'. Это всего лишь процедура инициализации. Если вы просто хотите «проверить» форму на каждом клике, используйте метод «.valid()». Вам все равно нужно сначала инициализировать плагин при загрузке страницы. – Sparky

ответ

3

Ваш код неправильно оборачивает .validate() внутри click обработчика ...

$('#btn').click(function() {     
    $("#form1").validate({      
     ...        
    }); 
}); 

Это неправильно, потому что .validate() лишь инициализации метод плагина, так что нет никаких причин, чтобы обернуть его внутри click обработчик. Кнопка click кнопки отправки уже автоматически захватывается и обрабатывается плагином.

Это правильный способ использовать метод .validate() ...

$(document).ready(function() { 

    $("#form1").validate({ // initialize the plugin     
     // rules & options       
    }); 

}); 

Рабочая DEMO с помощью JQuery 1.10.2 и 1.11.1 JQuery Validate, проверенную с IE 8: http://jsfiddle.net/jsDzU/show

Протестировано с реальной версией IE 8, установленной в Windows XP SP3. Никогда не предполагайте, что «IE 8 Mode» в другой версии IE является точным представлением реальной вещи или «эмулятора» - это не так. Microsoft provides free VPC hard drive images for accurate testing in each IE version.

+0

Я использую jquery 1.10.2 и jQuery Validation Plugin - v1.11.1 и имею те же проблемы. Ваш пример не будет работать на ie8. Предупреждение срабатывает, даже если вход пуст. – tylik

+0

Это еще хуже на ie7. Существует ошибка javascript, и скрипт просто зависает. Я думал, что это совместимо с crossbrowser. Есть ли способ исправить это? – tylik

+2

@tylik, я не уверен, что вы делаете, но моя ссылка была протестирована в реальной версии IE 8, работающей в Windows XP ... и работает отлично. Если вы тестируете в режиме «IE8» в другой версии IE, ваша методология тестирования ошибочна. Различные «режимы IE» не точно представляют поведение этих более старых версий. – Sparky

Смежные вопросы