【问题标题】:Clear field 'x' on IE11 Enterprise Mode or Compatibility mode在 IE11 企业模式或兼容模式上清除字段“x”
【发布时间】:2014-10-07 19:05:49
【问题描述】:

所以我在这里读到了 IE10 及更高版本的清除字段“x”解决方案

  • 在 IE10 非兼容模式下工作
  • 在 Win7 非兼容模式下在 IE11 上工作
  • 在 Win8 非兼容模式下无法在 IE11 上运行
  • 不适用于所有兼容模式
  • 在 IE11 企业模式下也不工作。

我的意思是在应用程序的 CSS 中添加以下行

::-ms-clear {
    display: none;
}

我想知道是否有其他方法可以禁用清除字段“x”?我认为应该在 IE10/11 配置中的某处进行配置?

不知何故,兼容或企业模式下的清除字段使JqGrid之类的插件无法正常工作,尤其是在过滤器文本框中,使用清除字段清除Jqgrid过滤字段中的输入不会触发jqgrid的过滤功能

编辑 ---------------------------------- -----

如果我没有把我的问题说清楚,我很抱歉。我开发的应用程序使用 JqGrid 来显示数据,并且还允许用户过滤显示的数据。但是在企业模式下,我看到每当在过滤器框中输入一个值时,IE 都会在输入中显示清除字段图标“x”。通常,当过滤器文本框(从键输入)发生更改时,JqGrid 会过滤显示的数据,即使我用退格键删除了过滤器文本框中的输入,JqGrid 也会检测到更改并适当地显示数据。

但是使用 IE 的清除字段,当单击“x”以删除我在过滤器文本框中的输入时,JqGrid 不显示任何响应。我尝试使用单击事件,以便当我单击“x”时,我希望 JqGrid 能够识别我所做的单击,但我意识到 JqGrid 会在我尝试关注过滤器文本框时做出响应,这不是我的想要。

我尝试使用 CSS 擦除“x”,如您的演示中所示效果很好,但在兼容性和企业模式下无法正常工作。

所以我在想,与其删除“x”,不如直接让 JqGrid 在用户单击“x”时做出响应。但到目前为止,我所有的解决方案都未能奏效......或者工作但不是我想要的方式。我不能简单地关闭兼容模式,因为这不是我能决定的..

【问题讨论】:

    标签: css internet-explorer jqgrid


    【解决方案1】:

    为此找到了解决方案,使 IE10 及更高版本中的明确字段适用于 JqGrid.. 经过测试,它适用于非和兼容性/企业模式。

    if (window.navigator.userAgent.match( /(MSIE|rv:11.0)/ )){
                var selectors = JSON.parse(sessionStorage.selectors);
                sessionStorage.selectors = "";
    
                $(selectors.join(', ')).bind("mouseup", function(){
                    var $input = $(this),
                        oldValue = $input.val();
    
                    if (oldValue == "") return;
    
                    var filters = {groupOp: "AND", rules: []};
    
                    setTimeout(function(){
                        var newValue = $input.val();
                        if (newValue == ""){
                            //Reloading the grid with newValue's value
                            filters.rules.push({field:$input[0].name, op:"bw", data:newValue});
                            $grid[0].p.search = true;
                            $.extend($grid[0].p.postData, {filters:JSON.stringify(filters)});
                            $grid.trigger("reloadGrid");
                        }
                    }, 1);
                });
            }
    

    使用来自Event fired when clearing text input on IE10 with clear icon的参考

    【讨论】:

      【解决方案2】:

      如果伪元素::-ms-clear 做你想做的事,那么你应该使用它。我不同意 Win8 中的 IE11 在非兼容模式下无法正常工作。我个人更喜欢放置<meta http-equiv="X-UA-Compatible" content="IE=edge"/> 来关闭HTML 页面的兼容模式。就像你可以在the demo 上验证所有在 IE10/IE11 Win7/Win8 上都能正常工作。

      【讨论】:

      • 是的,它确实适用于非兼容模式。但不知何故,我的工作优先级转到了兼容性和企业模式,所以这有点让我烦恼,因为我尝试过的解决方案都没有在这两种模式下工作。
      • 顺便说一句,奥列格,只是想问..当用户单击并清除该字段时,JqGrid 是否可以检测到“x”?现在的问题是,它清除了该字段,但 JqGrid 不会响应它。
      • @FredA:对不起,但我不明白 jqGrid 与问题的关系。您在“JqGrid 不会响应它”下的意思是什么?你想实现什么行为?您可以编写 focus 事件处理程序并做一些事情。您可以使用documentMode 属性来检测是否使用了兼容模式(以及哪种模式,例如IE5、IE7、...)。我仍然确信最好关闭您开发的所有 HTML 页面的兼容模式。
      • 对不起,如果我没有说清楚的话。我已经在上面编辑了我的问题。希望这次我的问题能弄清楚>
      猜你喜欢
      • 2013-12-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-09
      • 1970-01-01
      • 2016-01-02
      • 1970-01-01
      • 2014-09-13
      • 1970-01-01
      相关资源
      最近更新 更多