2015-03-31 1 views
0

У меня есть нечетная проблема с веб-формой с использованием HTMLButton в asp.net. Для форматирования мне нужно использовать конструкцию <button>, которая в порядке, она работает в каждом другом браузере, но IE11.HtmlButton не работает проверка на стороне клиента в 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.

Кто-нибудь видел такой вопрос?

ответ

0

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

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

preventDefault это делает, но то, что это странно, это на самом деле позволяет валидацию на стороне клиента для работы, как ожидалось, т.е. он попадает без принудительной обратной передачи (до этого клиентская сторона игнорировалась, и все формы были проверены на обратной стороне), поэтому это «исправление» не останавливает проверку валидации на стороне клиента.

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