javascript - 按“输入”键时表单提交不起作用
问题描述
当我按下enter
键时,我收到此错误:Form submission canceled because form is not connected
. 但Add User
按钮工作正常。
function Form({ modal, showModal, onAddUser }) {
const [name, setName] = useState('');
const [surname, setSurname] = useState('');
const [age, setAge] = useState('');
const createUser = (e) => {
if (!name || !age || !surname) {
return;
} else {
onAddUser(name, age, surname)
console.log(name, age)
}
setName('');
setAge('')
setSurname('');
showModal(false)
console.log(e);
}
return (
<>
{modal ? <FormContainer onSubmit={createUser}>
<InputContainer value={name} onChange={(e) => setName(e.target.value)} type="text" placeholder="Enter name" />
<InputContainer value={age} onChange={(e) => setAge(e.target.value)} type="number" placeholder="Enter age" />
<InputContainer value={surname} onChange={(e) => setSurname(e.target.value)} type="text" placeholder="Enter surname" />
<Button style={{ marginRight: "10px" }} type="cancel" onClick={() => showModal(false)}>Cancel</Button>
<Button type="button">Add User</Button>
</FormContainer>
: (null)
}
</ >
)
}
解决方案
您应该将“添加用户”按钮类型更改为submit
而不是button
. 此外,您应该调用e.preventDefault()
表单提交。
你的组件应该是这样的,
function Form({ modal, showModal, onAddUser }) {
const [name, setName] = useState('');
const [surname, setSurname] = useState('');
const [age, setAge] = useState('');
const createUser = (e) => {
// add this line here to prevent `form` element default behaviour
e.preventDefault();
if (!name || !age || !surname) {
return;
} else {
onAddUser(name, age, surname)
console.log(name, age)
}
setName('');
setAge('')
setSurname('');
showModal(false)
console.log(e);
}
return (
<>
{modal ? <FormContainer onSubmit={createUser}>
<InputContainer value={name} onChange={(e) => setName(e.target.value)} type="text" placeholder="Enter name" />
<InputContainer value={age} onChange={(e) => setAge(e.target.value)} type="number" placeholder="Enter age" />
<InputContainer value={surname} onChange={(e) => setSurname(e.target.value)} type="text" placeholder="Enter surname" />
<Button style={{ marginRight: "10px" }} type="cancel" onClick={() => showModal(false)}>Cancel</Button>
{/* here we changed type="button" to type="submit" */}
<Button type="submit">Add User</Button>
</FormContainer>
: (null)
}
</ >
)
}
推荐阅读
- javascript - JavaScript - 如何遍历对象数组
- python - 构建具有任意层数的 Keras 模型的函数
- reactjs - 反应路由器不工作。反应 JS
- angular - 如何在角度中使用 xlsx 将时间格式更改为 hh:mm:a
- reactjs - 反应组件中的日期排序
- c# - 以字节数组形式读取非常大的 pdf 文件并在 ASP.NET Web Forms 4 应用程序中查看的最快方法
- node.js - Discord.js ForEach 函数在 V12 中不起作用
- php - 合并/合并两个 mysqli_fetch_assoc 数组
- java - JOptionPane YES_NO_OPTION 不理解异常
- c# - 如何使用 Razor 页面模型实现选项卡