在javascript
中,我如何检查用户粘贴的'='
中是否有text
,并防止text
粘贴到textbox
中。我觉得有些棘手。我正在处理一个漏洞问题,在该漏洞问题上,不允许用户在=
字段中输入input
,在某种程度上我已经实现了用户不能在文本字段中输入但可以复制粘贴的问题。下面是我的代码。请帮忙。
$(document).ready(function()
{
inPutCheckForText();
});
function inPutCheckForText()
{
fields = document.getElementsByTagName('input');
for (index = 0; index < fields.length; ++index)
{
fields[index].addEventListener("keydown", function(event)
{
if (event.keyCode === 187)
{
console.log("blocked.");
event.preventDefault();
return false;
}
});
}
}
答案 0 :(得分:2)
除了“ keydown”事件。您应该使用“粘贴”事件来处理复制粘贴
$('#textbox').on("paste", function(e) {
if (event.keyCode === 187)
{
console.log("blocked.");
event.preventDefault();
return false;
}
});
或尝试使用
$ ('#textbox').bind("paste", function (e) {
if (event.keyCode === 187)
{
console.log("blocked.");
event.preventDefault();
return false;
}
});
答案 1 :(得分:1)
我是这样做的:
<input type="text" onpaste="validatePaste(this, event)">
,我调用位于 <script>
标签内的函数,例如:
function validatePaste(el, e) {
var regex = /^[a-z .'-]+$/gi;
var key = e.clipboardData.getData('text')
if (!regex.test(key)) {
e.preventDefault();
return false;
}
}
答案 2 :(得分:0)
这仅适用于过去的活动,您可以将其更改为其他活动。它将限制用户在输入字段中使用'='结束
$(function(){
$("#textInput").bind('paste', function(e) {
var ctl = $(this);
setTimeout(function() {
//Do whatever you want to $(ctl) here....
var bla = $('#textInput').val();
if (bla.indexOf('=') > -1){
alert("= not allowed");
$( '#textInput' ).val(null) ;
e.preventDefault();
return false;
}
}, 100);
});
});