首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未在IE11中运行客户端验证的HtmlButton

未在IE11中运行客户端验证的HtmlButton
EN

Stack Overflow用户
提问于 2015-04-01 05:14:59
回答 1查看 293关注 0票数 0

我在使用asp.net中的HTMLButton时遇到了一个奇怪的问题。出于格式化的原因,我需要使用<button>构造,这很好,它可以在除IE11之外的所有其他浏览器中工作。

代码语言:javascript
复制
<button id="cmdLogin" runat="server" OnServerClick="cmdLogin_OnServerClick" class="btn btn-more" ValidationGroup="Login" CausesValidation="True">
    Login
</button>

当我放置一个标准的asp.net按钮控件时,它可以工作,客户端验证就会运行。我能看到的按钮之间的区别是ASP.Net注入的onclick函数:

代码语言:javascript
复制
if (typeof(Page_ClientValidate) == 'function') Page_ClientValidate('ModalLogin'); __doPostBack('ctl00$scriptsFooterPlaceholder$TDF971800010$cmdLogin','')

我知道IE11在__doPostBack .Net 4上遇到了一些问题,但我使用的是.Net 4.51,所以我不认为是这个问题。在我测试过的所有其他浏览器(Chrome,FF,Safari,IE8,IE9,IE10)中,我看不到会阻止它的JavaScript错误(通过标准的按钮测试,我猜客户端脚本是可以工作的),只有IE11可以工作。

有没有人见过这种问题?

EN

回答 1

Stack Overflow用户

发布于 2015-04-01 15:30:23

我想我应该尝试在IE11中劫持单击事件,看看是否可以手动强制执行验证。事实证明,通过下面的代码可以更容易地“修复”IE11问题:

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

preventDefault做到了,但奇怪的是,它实际上允许客户端验证按预期工作,也就是说,它在不强制回发的情况下被捕获(在此之前,客户端的东西被忽略,所有表单都在回发时验证),所以这个“修复”不会阻止客户端验证的工作。

注意:我不喜欢也不提倡嗅探浏览器和版本,但在这种情况下,因为只有IE11有这种行为,我将在这个项目发布后对其进行更多的研究。这看起来像是使用.Net和使用HtmlButton构造的IE11中的一个错误,这可能需要微软的补丁。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29378725

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档