JavaScript-防止用户在输入文本中复制粘贴特殊字符?

时间:2019-02-15 06:28:12

标签: javascript jquery regex events input

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;
            }
        });
    }
}

3 个答案:

答案 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);
        });


    });