网页上的输入元素定义如下,以防止密码粘贴在:
<input type="password" class="field" id="password" name="password" title="Enter your password" maxlength="50" onpaste="javascript:return false;" size="38" tabindex="2">
我想在此输入字段中启用粘贴。使用Firebug或同等的我可以编辑onpaste函数,所以代码是:
onpaste="javascript:return true;"
这对我来说很好,但对于其他用户,我想要一个更简单的解决方案。我想到的是,如果我能给他们一些Javascript,他们可以打开控制台并粘贴一个简单的单行。但是,当我尝试这样做时,Javascript没有任何效果。我尝试了以下,但都没有奏效。
$('#password').onpaste=""
$('#password').onpaste="javascript:return true;"
我做错了什么?
答案 0 :(得分:2)
只需删除DOM element的onpaste
属性,而不是jQuery object没有onpaste
属性的属性。您的代码正在创建一个刚被忽略的属性(设置为字符串)。
在下面的示例中,您可以单击按钮并重新启用粘贴。
document.querySelector('button').addEventListener('click', function() {
document.getElementById('password').removeAttribute('onpaste');
})
<input type="password" class="field" id="password" name="password" title="Enter your password" maxlength="50" onpaste="javascript:return false;" size="38" tabindex="2">
<button>Allow pasting</button>
答案 1 :(得分:2)
问题是您正在尝试将jQuery与常规JavaScript结合使用。您可以使用纯JavaScript来删除onpaste侦听器。
document.getElementById('password').onpaste=""
如果您想使用jQuery,可以使用:
$('#password')[0].onpaste=""
会产生相同的结果。
答案 2 :(得分:1)
$('#password').onpaste=""
$('#password').onpaste="javascript:return true;"
不是有效的功能。对于来自粘贴的触发事件,您必须编写这样的函数
$('#password').bind("paste", function(e) {
callback();
});
但问题的解决方案是http://jsfiddle.net/9et20v36/,在按钮click
的{{1}}函数中,我从输入中删除allow
属性,允许粘贴文字。
所以对于纯JavaScript使用
onclick
或jQuery方式
document.getElementById('password').removeAttribute('onpaste');