Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何防止用户在文本框中粘贴文本?_Javascript_Html_Validation - Fatal编程技术网

Javascript 如何防止用户在文本框中粘贴文本?

Javascript 如何防止用户在文本框中粘贴文本?,javascript,html,validation,Javascript,Html,Validation,我有一个JS函数,可以防止用户键入字符 <script type="text/javascript"> function validate(evt) { var theEvent = evt || window.event; var key = theEvent.keyCode || theEvent.which; key = String.fromCharCode(key); var regex = /[0-9]|\./; if(!regex.test(key)

我有一个JS函数,可以防止用户键入字符

<script type="text/javascript">
function validate(evt) {
  var theEvent = evt || window.event;
  var key = theEvent.keyCode || theEvent.which;
  key = String.fromCharCode(key);
  var regex = /[0-9]|\./;
  if(!regex.test(key)) {
    theEvent.returnValue = false;
    if(theEvent.preventDefault) theEvent.preventDefault();
  }
}
</script>

<span>Radio Receive:</span>
<input name="ReceiveNo" type="text" class="txtbox" onkeypress='validate(event)' maxlength="11" value="${cpCon.receiveNo}" required tabindex="34" />

功能验证(evt){
var theEvent=evt | | window.event;
var key=theEvent.keyCode | | theEvent.which;
key=String.fromCharCode(key);
var regex=/[0-9]\./;
如果(!正则表达式测试(键)){
theEvent.returnValue=false;
如果(theEvent.preventDefault)theEvent.preventDefault();
}
}
无线电接收:
但我注意到,当用户试图从这个文本框粘贴一个单词时,可以输入文本。如何在不禁用粘贴的情况下防止这种情况发生?

jQuery:

    $(this).click(function () {
    $(".txtbox").attr("disabled", "disabled"); 

  });
或css:

.txtbox{
 display: none;
 visibility: hidden;
 }
或html属性:

 set disabled="disabled";

//禁用粘贴功能的步骤

$(文档).ready(函数(){
$('#txtInput').bind(“粘贴”,函数(e){
e、 预防默认值();
});
});
//下面的一个可能对您的功能有所帮助

$(文档).ready(函数(){
$('#txtInput').bind(“粘贴”,函数(e){
验证(e);
});
});

OnTabOut()
onblur()
您可以验证输入/粘贴的文本,而不是处理粘贴功能


非常简单的解决方案:

<input name="ReceiveNo" type="text" class="txtbox" onkeypress='validate(event)' maxlength="11" value="${cpCon.receiveNo}" required tabindex="34" onCopy="return false" onDrag="return false" onDrop="return false" onPaste="return false" autocomplete=off />


这对我很有效。现在,没有人可以使用鼠标的右键粘贴选项或按键盘上的ctrl+v组合键将其粘贴到文本框中。

我在Angular项目中尝试了这一点,没有jQuery,效果很好

<input type='text' ng-paste='preventPaste($event)'>

在非角度项目中,使用“onPaste”而不是“ng paste”,使用“event”而不是“$event”。

如果您只需要不可编辑的kendoComboBox(),则可以使用kendoDropDownList()

在我的例子中,我需要根据用户权限启用/禁用它, 下面是我提出的解决方案(这可以防止关键输入和粘贴值):


您可以测试它

VanillaJS解决方案

函数粘贴NotAllowFunc(xid){
让myInput=document.getElementById(xid);
myInput.onpaste=(e)=>e.preventDefault();
} 
pasteNotAllowFunc('pasteInput')
粘贴

文本区域
inputElement.readonly=true
?检查阻止控制字符的事件。检查类似问题。。如果我不想禁用粘贴选项,可能会重复该选项?我只想阻止用户键入或粘贴字符。请尝试绑定您的验证(阻止字符)粘贴选项,如答案中的II case。很抱歉,我不知道如何实现JS功能…我尝试了你的第二个选项,它可以禁用粘贴选项…但我不想取消此选项…我只想阻止我的文本框中的字符
OnTabOut()
不再存在,因为它在2015年被弃用了…如果你使用此选项,用户将无法输入textboxGreat。我无法直接添加onPaste,因此必须使用JavaScript添加它:$(“#stopPaste”).attr(“onPaste”,“return false”);这似乎就解决了问题。如果一个人只有少量的技术诀窍(开发工具->删除节点->重新创建节点),那么这些技术都很容易绕过,所以不要依赖它们来工作。现在是2020年,onPaste=“return false”仍然有效,是的,宝贝!!这至少不会阻止在Firefox/Linux上粘贴。不过,使用event.preventDefault()确实有效。为什么不使用简单的onPaste=“return false”?
$scope.preventPaste = function(e){
   e.preventDefault();
   return false;
};
if (user.hasRight()) {

  var myinput = $("#myinput").data("kendoComboBox");
  myinput.input.on("keydown", function (e) { e.preventDefault(); });
  myinput.input.bind("paste", function (e) { e.preventDefault(); });

}