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