Javascript 在输入时提交表格

Javascript 在输入时提交表格,javascript,html,react-redux,Javascript,Html,React Redux,我有一个问题,提交搜索表单时,点击回车键以及按钮点击。点击效果很好。文本被清除,显示/search页面并显示搜索索引。当我按enter键时,搜索文本将被清除,但没有其他内容。我添加了一个函数handleSubmit,但它不起作用。如何在回车时进行搜索 handleSubmit(e) { e.preventDefault(e); document.getElementById("search-input") .addE

我有一个问题,提交搜索表单时,点击回车键以及按钮点击。点击效果很好。文本被清除,显示/search页面并显示搜索索引。当我按enter键时,搜索文本将被清除,但没有其他内容。我添加了一个函数handleSubmit,但它不起作用。如何在回车时进行搜索

   handleSubmit(e) {   
        e.preventDefault(e);
        document.getElementById("search-input")
        .addEventListener("keydown", function (event) {
            // event.persist();
            if (event.keyCode === 13) {
                document.getElementById("search-button").click();
            }
        });
        this.setState( {
            searchItem: "",
        })
    };

    render() {

        return (
            <div id="search-form">
                <form>
                    <input
                        type="text"
                        id="search-input"
                        placeholder="Search videos"
                        value={this.state.searchItem}
                        onChange={this.update()}
                    />
                    <button type="submit" id="search-button" onClick={this.handleSubmit}>
                        <Link to={`/search?search=${this.state.searchItem}`}><img id="search-icon" src="https://image.flaticon.com/icons/svg/49/49116.svg" alt="" /></Link>
                    </button>
                </form>
            </div>
        );
    }

handleSubmit(e){
e、 防止违约(e);
document.getElementById(“搜索输入”)
.addEventListener(“向下键”,函数(事件){
//event.persist();
如果(event.keyCode===13){
document.getElementById(“搜索按钮”)。单击();
}
});
此.setState({
搜索项:“”,
})
};
render(){
返回(
);
}


只需编辑
document.getElementById(“搜索按钮”)。单击()
document.getElementById(“搜索按钮”).submit()

您的EventListener不能在handleSubmit函数中

form.addEventListener('submit', handleSubmit());

在表单中,默认情况下启用了enter to submit,但您需要告诉表单在提交时要做什么。因此,在表单中添加一个
onsubmit
事件:

<form onSubmit={this.handleSubmit}>
...
</form>
编辑:哦,您应该在事件处理程序函数的开头添加
preventDefault()
,类似于:

handleSubmit(e) {
    e.preventDefault(); //prevents the form from submitting before the end of this function
    //do something here...
}

您可以检查此问题。这可能会对您有所帮助。这回答了你的问题吗?应该是
handleSubmit
而不是
handleSubmit()
。我们只想指向函数,而不是调用它。
form.addEventListener('submit', this.handleSubmit);
handleSubmit(e) {
    e.preventDefault(); //prevents the form from submitting before the end of this function
    //do something here...
}