Javascript杀了我的剪贴板!我可以修理吗?

时间:2014-12-09 17:00:15

标签: javascript c# asp.net

每当用户点击ASP.Net文本框时,我都需要一种强制光标向左移动的方法,所以我投入了这两个Javascript函数:

<script type = "text/javascript">
    //Add this to the textbox: OnFocus="txtEPro_OnFocus()" 
    function txtEPro_OnFocus() {
        var elem = document.getElementById('<%= txtePro.ClientID %>');
        elem.value = "";
        elem.setSelectionRange(0, 0);

        var event = event || window.event;
        if (event.button == '0') {
            // it was a right click
            setTimeout(function () {
                elem.setSelectionRange(0, 0);
            }, 0);

        }
        // alert("Hello there"); 
    }

</script>

<script type = "text/javascript">
    $(document).mousedown(function () {
        //If it's a right-click, kill the menu, set the cursor to the left and show a message
        if (event.button == 2 && event.srcElement.id == '<%= txtePro.ClientID %>') {
            var elem = document.getElementById('<%= txtePro.ClientID %>');
            elem.setSelectionRange(0, 0);
        alert('right click not allowed');
        return false;
        }
        //If it's a left-click, just set the cursor to the left
        if (event.button == 1 && event.srcElement.id == '<%= txtePro.ClientID %>') {
            var elem = document.getElementById('<%= txtePro.ClientID %>');
            elem.setSelectionRange(0, 0);
        return false;
        }
    });
</script>

我会说明显而易见的:我不是Javascript编码器。因此,无论如何,发生的事情是,对于某些用户,他们无法使用Ctrl + V将值粘贴到框中。其中一项功能是阻止右键菜单出现(这就是我想要的),因此他们无法使用它来粘贴。

txtEPro_OnFocus 函数是我在SO上发现的,它说你需要使用一个计时器让光标向左移动。老实说,我甚至不知道它是否按照预期的方式工作,但是当我对该代码进行评论时,文本框无法正常工作。

这一切都源于我使用蒙面文本框的问题;如果用户右键单击蒙版中间并粘贴一个值,则表示它没有正确注册。因此,当用户点击文本框时,我使用上面的代码将光标强制到左侧。

有人可以告诉我为什么我的剪贴板可能没有响应Ctrl + V,或者你可以帮助我使用我的Javascript以便它能正常工作吗?我们在Windows 7环境中使用IE9(这是公司强制要求,即使我们想要也不能改变它)。

0 个答案:

没有答案