Javascript 在';输入';事件

Javascript 在';输入';事件,javascript,html,dom,dom-events,Javascript,Html,Dom,Dom Events,我想要的是过滤用户的输入。删除换行符并限制其长度 我尝试了两种方法 html 剧本 document.getElementById('text1') .addEventListener('input', function (evt) { evt.preventDefault(); // prevent value change const msg = evt.target.value.replace(/\n/g, '') if (msg.length <= 10) {

我想要的是过滤用户的输入。删除换行符并限制其长度

我尝试了两种方法

html


剧本

document.getElementById('text1')
.addEventListener('input', function (evt) {
 evt.preventDefault(); // prevent value change
 
 const msg = evt.target.value.replace(/\n/g, '')
 if (msg.length <= 10) {
   document.getElementById('text1').value = msg
 }
})

document.getElementById('text2')
.addEventListener('input', function (evt) {
 const msg = evt.target.value.replace(/\n/g, '').slice(0, 10)
 document.getElementById('text2').value = msg
})
document.getElementById('text1'))
.addEventListener(“输入”,函数(evt){
evt.preventDefault();//防止值更改
const msg=evt.target.value.replace(/\n/g“”)

如果(msg.length使用keyup事件来限制长度,或者您可以将maxlength作为属性手动添加到HTML中。如果您想动态设置它,可以使用Element.setAttribute。为了防止新行,您可以阻止返回键,只要它不是shift。您仍然可以使用replace来替换您认为需要替换的内容,即常规的压力将最有效地完成工作

var text=document.getElementsByTagName('textarea');
var text1=文本[0];
var text2=文本[1];
text1.addEventListener('keydown',函数(事件){
设val=event.target.value;
设极限=25;
//达到特定长度后限制该值
如果(值长度>3){
event.target.value=val.substr(0,限制)
};
//通过防止按enter键来防止新行
if(event.keyCode===13&&!event.shiftKey){
event.preventDefault();
警报(“请不要新行”);
返回false;
}
//您可以使用替换进行过滤
})


所以使用maxLength的文本框?没有换行符,也没有限制长度的代码。更改值时出现问题,这会导致光标跳转。@epascarello第二个文本框也会导致光标跳转?我想让用户在键入时感觉自然。持续按时,keyup事件会导致光标跳转key@MJk将其切换到keydown或应用以下选项之一:作为替代方案提出的许多建议。
document.getElementById('text1')
.addEventListener('input', function (evt) {
 evt.preventDefault(); // prevent value change
 
 const msg = evt.target.value.replace(/\n/g, '')
 if (msg.length <= 10) {
   document.getElementById('text1').value = msg
 }
})

document.getElementById('text2')
.addEventListener('input', function (evt) {
 const msg = evt.target.value.replace(/\n/g, '').slice(0, 10)
 document.getElementById('text2').value = msg
})