Javascript 如何禁用';粘贴&x27;在Android浏览器中使用JQuery?

Javascript 如何禁用';粘贴&x27;在Android浏览器中使用JQuery?,javascript,jquery,android-browser,Javascript,Jquery,Android Browser,我有一个输入字段,我不希望用户在其中粘贴任何值。我使用以下jQuery代码,它在桌面浏览器和iPhoneSafari上运行良好。问题是它在Android浏览器上不起作用 $('#no_paste').bind("paste", function(e) { e.preventDefault(); }); 这是我在Galaxy SIII上测试过的,Android浏览器似乎没有发送 粘贴事件。但是,粘贴某些内容后,它仍然发送输入事件 如果用户在字段中键

我有一个输入字段,我不希望用户在其中粘贴任何值。我使用以下jQuery代码,它在桌面浏览器和iPhoneSafari上运行良好。问题是它在Android浏览器上不起作用

$('#no_paste').bind("paste", function(e) {                
        e.preventDefault();
});

这是我在Galaxy SIII上测试过的

,Android浏览器似乎没有发送
粘贴
事件。但是,粘贴某些内容后,它仍然发送
输入
事件

如果用户在字段中键入内容,他将为每个字母触发一个
input
事件。但是,如果他正在粘贴,
input
事件只会为粘贴的整个字符串触发一次。根据这一观察结果,我们可以如下方式阻止粘贴:

$('#ie').bind("input", function() {
    var previousValue = $(this).data('old_value') || '',
        newValue = $(this).val();

    if((newValue.length - previousValue.length) > 1) {
        $(this).val(previousValue);
    }

    $(this).data('old_value', $(this).val());
});
您将找到JSFIDLE


请注意,这也会阻止自动完成和所有其他奇怪的输入技术以类似的方式工作(我不知道任何)。我知道这与问题无关,但为什么要禁用粘贴?嗯,输入字段(如电子邮件确认、密码确认)不应该被粘贴。我不确定我是否同意这一点。值得思考的是:这确实是主观的,取决于行业类型。不可否认的是,从用户的角度来看,较少的输入总是很好的,最终没有傻瓜式的设计,因为系统将只收集具有正确格式的数据,而上下文是完全不可能的。好的黑客!但是如果用户粘贴一个字符,它仍然可以工作。@CalebC当然可以,但很难相信有人会一个字母一个字母地粘贴整个电子邮件/密码,只是为了避免“粘贴”保护。这样做比打字要复杂和麻烦得多,那有什么意义呢?但是,如果您的输入字段中只有一个字母,那么只需执行以下操作:如果发送了
input
事件,但在此之前没有发送
keydown
事件,则我们可以将其分类为
粘贴