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

Pet*_*erS 22 html javascript 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)) {
    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" />
Run Code Online (Sandbox Code Playgroud)

但我注意到,当用户尝试粘贴此文本框中的单词时,可以输入文本.如何在不禁用粘贴的情况下阻止此操作?

are*_*n2k 40

非常简单的方案:

<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 />
Run Code Online (Sandbox Code Playgroud)

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


Mal*_*ddy 24

//禁用粘贴功能

$(document).ready(function(){
  $('#txtInput').bind("paste",function(e) {
      e.preventDefault();
  });
});
Run Code Online (Sandbox Code Playgroud)

//在One下面可能对您的功能有所帮助.

$(document).ready(function(){
  $('#txtInput').bind("paste",function(e) {
    validate(e);
  });
});
Run Code Online (Sandbox Code Playgroud)

要么

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

  • 尝试绑定您的验证(防止字符)粘贴选项,如II案例在答案中. (3认同)
  • 如果我不想禁用粘贴选项怎么办?我只想阻止用户输入或粘贴字符. (2认同)

Abh*_*hek 5

我在我的Angular项目中试过这个,没有jQuery就可以正常工作.

<input type='text' ng-paste='preventPaste($event)'>
Run Code Online (Sandbox Code Playgroud)

在脚本部分:

$scope.preventPaste = function(e){
   e.preventDefault();
   return false;
};
Run Code Online (Sandbox Code Playgroud)

在非角度项目中,使用'onPaste'代替'ng-paste'和'event'而不是'$ event'.