Javascript 如何防止用户在文本框中粘贴文本?
我有一个JS函数,可以防止用户键入字符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)
<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(); });
}