javascript - 当 "onChange"已为不同功能保留时,如何避免在 react 输入字段中使用空格?

标签 javascript reactjs

我有一个带有“onChange”事件的输入字段,它使用“forEach”方法获取数组的元素,并且效果很好。但我还想在输入字段中添加一项附加功能 - 避免输入空格。我应该如何附加这个附加功能?

我尝试使用“onKeyDown”事件来避免空格,但可能会出现错误。下面是输入字段的代码:

ma​​inList.js

<input
type="text"
className="form-control"
value={sprNotDeleted.value}
onKeyDown= 
{this.AttributeValidation(sprNotDeleted.value)}
onChange={this.inputChanged.bind(
this,
sprNotDeleted.id
)}
/>

inputChanged()

inputChanged = (index, e) => {
    const { sprNotDeleted } = this.state;
    sprNotDeleted.forEach(point => {
      point.value = point.id === index ? e.target.value : point.value;
    });
    this.setState({ sprNotDeleted, isEdit: false });
  };

属性验证()

 AttributeValidation(value) {
    this.setState({
      sprNotDeleted: value.replace(/\s/g, "")
    });
  }

如果我使用“onKeyDown”,则会出现相应的错误: 类型错误:sprNotDeleted.map 不是函数

最佳答案

观察到,对于 onKeyDown 您没有将事件绑定(bind)到此。

onKeyDown= {this.AttributeValidation.bind( 这, sprNotDeleted.value )}

<input
    type="text"
    className="form-control"
    value={sprNotDeleted.value}
    onKeyDown= {this.AttributeValidation.bind(
    this,
    sprNotDeleted.value
    )}
    onChange={this.inputChanged.bind(
    this,
    sprNotDeleted.id
    )}
/>

当您访问此范围时,建议使用此bind()

您可以尝试使用模式正则表达式处理作为输入类型文本,而不是通过 onKeyDown() 进行处理,您可以通过模式本身来处理它吗?

<input 
    type="text" 
    pattern="[^\s]+"
/>

祝你编码愉快!!

关于javascript - 当 "onChange"已为不同功能保留时,如何避免在 react 输入字段中使用空格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57156099/

相关文章:

javascript - 如何将 datepicker 结束日期设置为从当前日期起 20 年?

javascript - 如何限制图片上传大小小于 2mb?

javascript - 从 URL 获取 JSON 文件,XMLHttpRequest 无法加载错误

javascript - useSelector() 返回未定义

javascript - 有没有一种简单的方法可以调整 Framer Motion 中可拖动元素的动量/惯性?

reactjs - 将 MediaRecorder 分块到 Google Cloud 平台时视频上传损坏

javascript - 输入掩码组的分割长度

javascript - React JS setState 行为

javascript - 修改 this.state 中的一项会删除 React JS State Object 中的所有其他项

javascript - 如何验证多个属性是否在 JavaScript 中的 JSON 结构中?