如何在不重定向的情况下提交 HTML 表单?

How to submit a HTML form without redirecting?

我正在编写一个使用 reactreact-router 进行路由的客户端渲染 Web 应用程序。我已经在 formreact-bootstrap.

中使用 input 进行了搜索
executeSearch(){
    ...
    window.location.href = '/#/search/' + formattedURL
}

let formSettings = {
  onSubmit:this.executeSearch.bind(this),
  id:"xnavbar-form"
}

const searchButton =
<Button
  onClick={this.executeSearch.bind(this)}>
  <Glyphicon glyph="search" />
</Button>

const searchInput =
<form>
  <Input
    type="text"
    ref="searchInput"
    buttonAfter={searchButton}
    placeholder="search"/>
</form>

... Jumping to the render function

<Navbar.Form
    {...formSettings}>
    {searchInput}
</Navbar.Form>

Mozilla Firefox 中执行搜索按预期工作:按下回车键并单击 searchButton 将我转到客户端呈现的页面 .../#/search/...

Google Chrome 中执行搜索的行为如下:单击 searchButton 的工作方式与上面相同(客户端呈现),但按下回车键会导致服务器重定向 .../?#/search...

我发现它是由表单的 submit 属性引起的,我该如何修改它以在客户端上呈现?

我正在考虑听一个键盘 ascii 码 (enter) 来执行搜索,但它似乎有点乱。

停止使用 event.preventDefault() 提交表单的默认行为。

这将阻止浏览器提交您的表单,而是将 "routing" 逻辑留给您去做您想做的事。

只需在您的 executeSearch 函数中接受事件。

executeSearch(event){
    ...
    event.preventDefault();
    window.location.href = '/#/search/' + formattedURL;
}