HtmlButton не выполняет проверку на стороне клиента в IE11

У меня возникла странная проблема с веб-формой, использующей HTMLButton в asp.net. По причинам форматирования мне нужно использовать конструкцию <button>, которая в порядке, она работает во всех других протестированных браузерах, кроме IE11.

<button id="cmdLogin" runat="server" OnServerClick="cmdLogin_OnServerClick" class="btn btn-more" ValidationGroup="Login" CausesValidation="True">
    Login
</button>

Когда я размещаю стандартную кнопку управления asp.net, она работает, выполняется проверка на стороне клиента. Разница, которую я вижу между кнопками, - это функция onclick, которую вводит ASP.Net:

if (typeof(Page_ClientValidate) == 'function') Page_ClientValidate('ModalLogin'); __doPostBack('ctl00$scriptsFooterPlaceholder$TDF971800010$cmdLogin','')

Я знаю, что у IE11 были некоторые проблемы с __doPostBack .Net 4, но я использую .Net 4.51, поэтому я не думаю, что это так. Я не вижу никаких ошибок JavaScript, которые могли бы его остановить (и со стандартным тестом кнопки я предполагаю, что скрипт на стороне клиента работает) и во всех других браузерах, которые я тестировал (Chrome, FF, Safari, IE8, IE9, IE10) он работает, только IE11.

Кто-нибудь видел такую ​​проблему?


person Modika    schedule 31.03.2015    source источник


Ответы (1)


Я подумал, что попытаюсь перехватить событие щелчка в IE11 и посмотреть, смогу ли я вручную принудительно выполнить проверку. Это оказалось проще, так как приведенный ниже код «исправляет» проблему IE11:

   <script>
   var isIE11 = !!navigator.userAgent.match(/Trident.*rv\:11\./);
   if (isIE11) {
       $('.btn').on('click', function (e) {
           e.preventDefault();
       });
   }

The preventDefault does it, but what is odd is it actually allows the client side validation to work as expected, i.e. it gets caught without forcing a postback (before this the client side stuff was ignored and all forms were validated on postback), so this "fix" is not stopping the client side validation from working.

Примечание. Я не люблю и не поддерживаю прослушивание браузера и версии, но в данном случае только IE11 имеет такое поведение, и я собираюсь провести дополнительное исследование после того, как закончу этот проект. дверь. Похоже на ошибку в IE11 с .Net и использованием конструкции HtmlButton, для которой может потребоваться исправление от Microsoft.

person Modika    schedule 01.04.2015