javascript - onKeyDown 从 e.target.value 获取值?

标签 javascript reactjs ecmascript-6

我在 React 中处理输入的方式有什么问题?我想检测键码并防止将它们输入到输入中,但现在下面的代码似乎不起作用。

const Input = ({ placeholder }) => {   const [inputValue, setInputValue] = useState("");

  const handleKeyDown = e => {
    console.log(e.target.value);
    if ([188].includes(e.keyCode)) {
      console.log("comma");
    } else {
      setInputValue(e.target.value);
    }   };

  return (
    <div>
      <input
        type="text"
        value={inputValue}
        onKeyDown={handleKeyDown}
        placeholder={placeholder}
      />
    </div>   ); };

https://codesandbox.io/s/ancient-waterfall-43not?file=/src/App.js

最佳答案

您需要调用e.preventDefault(),但您还需要将onChange 处理程序添加到输入:

  const handleKeyDown = e => {
    console.log(e.key);
    if ([188].includes(e.keyCode)) {
      console.log("comma");
      e.preventDefault();
    }
  };

const handleChange = e => setInputValue(e.target.value);
...

  <input
    type="text"
    value={inputValue}
    onChange={handleChange}
    onKeyDown={handleKeyDown}
    placeholder={placeholder}
  />

关于javascript - onKeyDown 从 e.target.value 获取值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62125195/

相关文章:

javascript - ReactJS - 如何在使用数组时设置 <td> 标签的样式?

javascript - Reactjs API错误 'TypeError: fetch(...).then(...).then(...).done is not a function'

javascript - 如何在React中使用可变数据和实时图表实现最佳性能?

javascript - 根据数据值对 S、M、L 等服装尺码进行排序

javascript - 如何让我的 ember.js 应用程序导入从 bower 或 npm 安装的模块

javascript - 自动完成 ="on"由于某些奇怪的原因无法正常工作

javascript - 在公共(public)背景前显示元素

javascript - JavaScript 中的 WebRTC

javascript - 如何在 react /故事书中正确使用外部状态

javascript - React - 如何创建链式级联辅助函数