首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cntrl S提交一份在反应中的JS但输入字段不工作

Cntrl S提交一份在反应中的JS但输入字段不工作
EN

Stack Overflow用户
提问于 2021-12-24 04:22:31
回答 1查看 75关注 0票数 0

//当我试图用ctrl求和a时,它会提交,但问题是输入字段,而不是work //当我评论onKeyDown输入字段时,我无法使用ctrl S提交表单

代码语言:javascript
复制
const [value, setValue] = useState("");
    const [contentEdit, setContentEdit] = useState(false);

    const handleChange = e => {
        setValue(e.target.value);
        console.log(e.target.value);
        setContentEdit(false);
    };


    const handleSubmit = e => {
        e.preventDefault();
        alert("you have searched for - " + value);
        // or you can send to backend
        setValue("");
    };

    const handleKeypress = event => {
        event.preventDefault();
        let charCode = String.fromCharCode(event.which).toLowerCase();
        if ((event.ctrlKey || event.metaKey) && charCode === 's') {
            console.log("CTRL+S Pressed");
            alert("CTRL+S Pressed");
            // onSubmitMemo();
            handleSubmit();
        }
    };

 <div
            onKeyDown={handleKeypress}
            contentEditable={true}
            className='border border-3 border-info'>
            <h1>Hello Ctrl + S to Submit</h1>
            <div>
                <input type="text" name="email"
                    onChange={handleChange}
                />
                <input type="text" name="name"
                    onChange={handleChange}
                />
                <button type="submit" onClick={handleSubmit}>+</button>
            </div>
        </div>
EN

回答 1

Stack Overflow用户

发布于 2021-12-24 06:49:20

我已经尝试了你的代码,没有Ctrl +S--它工作得很好。但是,如果将contentEditable={true}道具插入div,则无法工作。但我已经帮你实现了。你可以把这个转过来。

代码语言:javascript
复制
import React from "react";
export default function App() {
  const [value, setValue] = React.useState("");
  const [name, setName] = React.useState("");

  console.log(value, name);

  const handleSubmit = (e) => {
    alert("you have searched for - " + value);
    // or you can send to backend
    setValue("");
    setName("");
  };

  const handleKeypress = (event) => {
    let charCode = String.fromCharCode(event.which).toLowerCase();
    if (event.ctrlKey && charCode === "s") {
      console.log("CTRL+S Pressed");
      alert("CTRL+S Pressed");
      // onSubmitMemo();
      handleSubmit();
    }
  };

  return (
    <div
      onKeyDown={(e) => handleKeypress(e)}
      className="border border-3 border-info"
    >
      <h1>Hello Ctrl + S to Submit</h1>
      <div>
        <form onSubmit={(e) => handleSubmit(e)}>
          <input
            type="text"
            name="email"
            onChange={(e) => setValue(e.target.value)}
            value={value}
          />
          <input
            type="text"
            name="name"
            onChange={(e) => setName(e.target.value)}
            value={name}
          />
          <button type="submit" onClick={handleSubmit}>
            +
          </button>
        </form>
      </div>
    </div>
  );
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70469532

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档