代码之家  ›  专栏  ›  技术社区  ›  Paul

限制输入HTML字段中的空格

  •  0
  • Paul  · 技术社区  · 2 年前

    我正在使用React编写一个网站,我遇到了一个有趣的问题。

    我有一个简单的组件,用户可以在其中输入文本。该组件是使用HTML输入字段实现的。

     const Title = () => {
      return (
          <span>
            Name title
          </span>
          <input
            id="name_title"
            onChange={(event) => setNameTitle(event.target.value)}
            value={NameTitle}
          />
      );
    };
    
    export default Title;
    

    我的问题是处理空间。默认情况下,不会以任何方式处理空格,因此,用户可以输入任意数量的空格。但正如你所理解的,这是不对的。我想:

    1. 禁止在带有空格的字段中开始输入。也就是说,使得用户不能输入空间作为字段中的第一个字符;
    2. 限制单词之间的空格数。不超过一个。也就是说,一个空格后面不能跟一个空格。

    我认为这是一件非常有用的事情,但不幸的是,我完全没有发现关于这个问题的信息。告诉我如何解决这个问题

    1 回复  |  直到 2 年前
        1
  •  1
  •   Kaan Taş    2 年前

    在JavaScript中,您可以使用String.protype.trimStart()函数来消除字符串开头的空白。要清除字符串中的任何空格(单词之间的空格),您需要使用string.protype.replacement()函数来替换长度超过1个字符的空格(通过使用正则表达式)。

    这行代码应该可以做到这一点:

    onChange={(event)=>setNameTitle(event.target.value.trimStart().replace(/\s+/g,“”)

    首先,使用trimStart()函数删除字符串开头的空白,然后删除该字符串(用“g”表示)中所有出现的字符(用“”字符表示)的一次或多次重复出现的空白(在正则表达式中用“\s”表示)。 然而,如果您将该输入中的值提交给函数或web服务器,这将无法消除该字符串中的最后一个单数空格(如果存在)。因此,在提交之前,请确保使用NameTitle.trimEnd()来消除该字符串中的最后一个空白字符(如果存在)。