Javascript 通过右键单击进行复制/粘贴的客户端表单验证

Javascript 通过右键单击进行复制/粘贴的客户端表单验证,javascript,html,jsp,struts-1,Javascript,Html,Jsp,Struts 1,我使用以下行(Struts1语法)显示一个文本字段,并允许通过Javascript进行一些客户端检查 <html:text styleId="myField" property="myProperty" onkeyup="function()" /> 我的目的是在表单字段中输入文本时显示消息并禁用下拉列表(无论内容如何)。onkeyup属性适用于所有情况,但用户使用鼠标右键单击粘贴文本时除外 似乎onmousedown和onmousedup事件不会注意到右键单击。这同样适用于o

我使用以下行(Struts1语法)显示一个文本字段,并允许通过Javascript进行一些客户端检查

<html:text styleId="myField" property="myProperty" onkeyup="function()" />

我的目的是在表单字段中输入文本时显示消息并禁用下拉列表(无论内容如何)。
onkeyup
属性适用于所有情况,但用户使用鼠标右键单击粘贴文本时除外

似乎
onmousedown
onmousedup
事件不会注意到右键单击。这同样适用于
onfocus

onchange
仅在焦点丢失时进行检查,但是用户可以通过粘贴数据并单击表单提交(与
onblur
相同)

onmouseout
在IE8中有些工作(我可以破坏功能),但在ChromeV41.0.2272.89中根本不工作


是否有人在鼠标右键单击时遇到客户端表单检查?我想跨浏览器介绍这个用例,但不能指望最终用户总是通过键盘快捷键进行粘贴

我选择了上面评论中建议的jQuery解决方案

最初我有这个功能:

$(document).ready(function(){
    $('#myField').bind("paste",function(e) {
        toggleFunction(); //preserve already existing function in use with other cases
    });
});
但是后来发现,虽然函数将在用户粘贴之后运行,但它将在实际粘贴文本之前运行

例如:

  • 用户粘贴(右键单击>粘贴或Ctrl+V)

  • 函数被调用并执行,并进行条件检查

  • 文本被粘贴

  • 因此,我用预期的最终结果替换了jQuery中的函数调用,在其他地方做了一些额外的更改,以满足我的假设

    但撇开这些条件不谈,下面的内容最终会满足我的需要

    $(document).ready(function(){
        $('#myField').bind("paste",function(e) {
            document.getElementById("dropdownID").disabled = true;  
            document.getElementById("showMessage").style.visibility = "visible";    
        });
    });
    

    是否要禁用粘贴?你看到了吗:?@Aleksandr不幸的是,我的工作是对一个应用程序进行增强,在这个应用程序中,用户需要复制+粘贴。但是,post中似乎有一个绑定到粘贴的jquery函数。我会调查的,谢谢。如果有人解释了上面的jQuery行为并提供了一个替代方案,我会改变我接受的答案。