不允许在文本区域中换行

发布于 2024-10-16 23:55:40 字数 360 浏览 4 评论 0原文

使用 jQuery 如何不允许插入新行(通过按 Enter 或复制文本)- 在半伪代码中...

$('textarea').keydown(function(){
 $(this).remove_new_lines();
});

谢谢!

编辑:

它会像下面一样粗糙还是有更好的方法?

function removeNL(s){ 
  return s.replace(/[\n\r\t]/g,); 
}

$('textarea').keydown(function(){
 $(this).val(removeNL($(this).val));
});

Using jQuery how can I not allow new lines to be inserted (by pressing enter or copying in text) - In semi-pseudo code...

$('textarea').keydown(function(){
 $(this).remove_new_lines();
});

Thanks!

EDIT:

Would it be as crude as the following or is there a better way?

function removeNL(s){ 
  return s.replace(/[\n\r\t]/g,); 
}

$('textarea').keydown(function(){
 $(this).val(removeNL($(this).val));
});

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

爺獨霸怡葒院 2024-10-23 23:55:40

有两种方法可以做到这一点:在输入时检查每个字符,如果您不希望它显示,则返回 false,或者在每次更改/键入时您可以检查整个内容。虽然前者的性能更高,但在用户粘贴包含不需要的字符的内容的情况下它不起作用。因此,我推荐后一种方法,如下所示(这将禁止所有垂直空白):

使用 jQuery:

$('textarea').on('keyup', function(){
  $(this).val($(this).val().replace(/[\r\n\v]+/g, ''));
});

或使用纯 JavaScript (ES2015/ES6):

constrainInput = (event) => { 
  event.target.value = event.target.value.replace(/[\r\n\v]+/g, '')
}

document.querySelectorAll('textarea').forEach(el => {
  el.addEventListener('keyup', constrainInput)
})

另一种方法是等到焦点离开文本区域,然后应用转变。这可以避免使用合成的、有条件的活动键盘控件的操作系统上的卡顿行为。不过,用户在离开该字段之前都会看到换行符,因此请注意。为此,只需将上述事件侦听器更改为侦听 blur 而不是 keyup

如果您使用 React,那么您已经制作了它,因为它可以避免移动浏览器的问题,同时让您可以使用受控组件在值更改时对其进行管理:

class TextArea extends React.PureComponent {
  state = {
    value: ""
  };

  handleChange = event => {
    const value = event.target.value.replace(/[\r\n\v]+/g, "");
    this.setState({ value });
  };

  render() {
    return <textarea onChange={this.handleChange} value={this.state.value} />;
  }
}

There are two methods to do this: check each character as it is input and return false if you don't want it to show up, or on each change/keyup you can check the entire contents. While the former is more performant, it won't work in situations where the user pastes content in that includes unwanted characters. For that reason, I recommend the latter approach, something like this (which will disallow all vertical whitespace):

With jQuery:

$('textarea').on('keyup', function(){
  $(this).val($(this).val().replace(/[\r\n\v]+/g, ''));
});

Or using plain JavaScript (ES2015/ES6):

constrainInput = (event) => { 
  event.target.value = event.target.value.replace(/[\r\n\v]+/g, '')
}

document.querySelectorAll('textarea').forEach(el => {
  el.addEventListener('keyup', constrainInput)
})

Another approach is to wait until the focus leaves the textarea, then apply the transformation. This avoids janky behavior on operating systems using synthetic, conditionally active keyboard controls. The user will see newlines until they leave the field, though, so be aware. To do this, just change the above event listener to listen for blur rather than keyup.

If you're using React, you have it made because it avoids issues with mobile browsers while letting you manage the value as it changes using controlled components:

class TextArea extends React.PureComponent {
  state = {
    value: ""
  };

  handleChange = event => {
    const value = event.target.value.replace(/[\r\n\v]+/g, "");
    this.setState({ value });
  };

  render() {
    return <textarea onChange={this.handleChange} value={this.state.value} />;
  }
}
奶茶白久 2024-10-23 23:55:40

你可以检查 keyCode,如果它等于 13,则返回 false

$('#TEXTAREA').keypress(function(e){
   if (e.keyCode == 13) return false
})

you can check keyCode, if it is equal to 13 simply return false

$('#TEXTAREA').keypress(function(e){
   if (e.keyCode == 13) return false
})
兮子 2024-10-23 23:55:40
$('textarea').keydown(function(e){
 var s = $('textarea').val();
 while (s.indexOf("\n") > -1)
  s = s.replace("\n","");
 $('textarea').val(s);
});
$('textarea').keydown(function(e){
 var s = $('textarea').val();
 while (s.indexOf("\n") > -1)
  s = s.replace("\n","");
 $('textarea').val(s);
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文