繁体   English   中英

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

[英]JavaScript - Prevent users from copy pasting a special character in input text?

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

除了“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;
  }
});

我这样做:

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

这将仅适用于过去事件,您可以将其更改为其他事件。 它将限制用户在输入字段中使用 Past '='

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


    });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM