作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在编写一个客户端渲染 Web 应用程序,使用 react
和 react-router
进行路由。我已经使用 react-bootstrap
在 form
内使用 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
中执行搜索按预期工作:按下 Enter 键并单击 searchButton
将我引导至客户端呈现的页面.. ./#/search/...
.
在 Google Chrome
中执行搜索的行为如下:单击 searchButton
的工作方式与上面类似(客户端呈现),但按 Enter 键会导致服务器重定向.../?#/搜索...
.
我发现这是由表单的 submit
属性引起的,如何修改它以在客户端上呈现?
我正在考虑听键盘 ascii 代码(输入)来执行搜索,但这似乎有点困惑。
最佳答案
使用 event.preventDefault()
停止表单提交的默认行为。
这将阻止浏览器提交您的表单,而是将“路由”逻辑留给您来执行您想要的操作。
只需在 executeSearch
函数中接受该事件即可。
executeSearch(event){
...
event.preventDefault();
window.location.href = '/#/search/' + formattedURL;
}
关于javascript - 如何在不重定向的情况下提交 HTML 表单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35105132/
我是一名优秀的程序员,十分优秀!