0

在 IE10onkeyup中,只有双击元素才能对元素起作用(仅元素处于焦点中)

在 FF 和 Chrome 中它可以工作。

出了什么问题,我该如何解决?

  <script>
   // this works
    document.getElementById('ContractNumber').onmousedown = function () {
        validateContractNumber(this);
    };

    // this not fired until i do double click
    document.getElementById('ContractNumber').onkeyup = function () {
        validateContractNumber(this);
    };
</script>

<style>
input[type=text]
{
   ....
   /*focus also doesn't work until double click this field*/
    &:focus
    {
        border: @Text-Focus;
        background-color: @Text-Focus-Back;
    }
}

</style>


<!--jquery dialog-->
<div id="dlgEditClient" style="display: none;">
    <div class="td editor-field left" title="Edit contract number for client">
        <input type="text" value="" name="ContractNumber" id="ContractNumber">
    </div>
    .............
</div>
4

2 回答 2

0

实际上,我有一个很好的技巧来解决这个问题。但请注意,这不是直接的解决方案

因此,在这种情况下,您需要双击,我更喜欢以编程方式诱导点击。在您的情况下,我将尝试查看浏览器是否为 IE:

<%String browser = request.getHeader("User-Agent"); %>
function callDuringLoad()
{
<% if (browser.indexOf("MSIE") > 0) {
%>
document.getElementById('ContractNumber').fireEvent("onclick");
<%}
}

window.onload=callDuringLoad;

因此,如果浏览器是 IE,在页面加载期间,将调用函数 callDuringLoad 并触发 id 'ContractNumber' 上的单击事件。因此,当用户手动单击该 ID 时,它变成了双击。

如果document.getElementById('ContractNumber').fireEvent("onclick");在 IE 10 中不起作用,那么您可以使用:

document.getElementById('ContractNumber').click();

检测 IE 10:如果您讨厌用户代理嗅探并且只想通过 javascript 检测 IE 10,那么您可以使用以下代码:

if (navigator.appVersion.indexOf("MSIE 10") != -1){
    //you stuff here
}

希望这可以帮助 !

于 2013-08-12T11:53:40.883 回答
0

感谢你的回答。在我的情况下,问题在于使用插件 qtip2,当我删除它时,它都按预期工作

于 2013-08-12T12:29:31.447 回答