作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有 2 个函数附加到表单中的听众。一个onsubmit
附加到 <form>
和一个 onkeyup
附加到 <input>
在表格内。
表单没有搜索按钮,用户必须按回车键才能提交表单。问题是按下回车键会在 onsubmit 之后触发 onkeyup。
onkeyup 函数显示一条消息“按回车键搜索”,然后 onsubmit 应该用加载栏替换该文本,直到 AJAX 返回结果。脚本没有显示我的加载栏,而是显示文本“按 Enter 进行搜索”。
这里是一个简化...
<script>
function doThings(){
document.getElementById('results').innerHTML = "<img src='loading.gif' />";
//Ajax Stuff
return false;
}
function checkThings(){
var someCondition = true;
if(someCondition){
document.getElementById('results').innerHTML = "Press ENTER to search.";
}
}
</script>
<form onsubmit="return doThings()">
<input type="text" id="q" onkeyup="checkThings();" />
</form>
<div id="results"></div>
如何确保 onsubmit 函数在 onkeyup 函数之后执行,否则会阻止 onkeyup 函数在按下 ENTER 键时执行?
最佳答案
简单的解决方法是在 setTimeout 调用中包装显示加载栏以在下一个事件循环中执行它:
setTimeout(function() {
document.getElementById('results').innerHTML = "<img src='loading.gif' />"
}, 0);
编辑:另一种方法,如果您实际上想要阻止 onkeyup 函数在按下 ENTER 键时执行,则检查事件处理程序中的键码。 “回车”键码为13:
<input type="text" id="q" onkeyup="if (event.keyCode !== 13) checkThings();" />
关于Javascript:onkeyup 与 onsubmit 相处不来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21738638/
我有一个 Controller 需要从配置服务器刷新配置,因此我在其上添加了@RefreshScope。同时这个 Controller 需要调用后端API,以便我定义restTemplate Bean
我是一名优秀的程序员,十分优秀!