当在输入文本元素中按下输入按钮时,有没有办法阻止网页完全刷新?
我正在寻找创建一个搜索字段,我可以通过按下Enter来过滤对象,只显示包含搜索字段中文本的文本。
我尝试了以下尝试捕捉输入按钮,但它不起作用。
function setupSearchField() {
document.getElementById("searchField").onKeyDown = function(event) {
var holder;
if (window.event) {
holder = window.event.keyCode;
} else {
holder = event.which;
}
keyPressed(holder);
}
}
function keyPressed(key) {
if (key == 13) {
event.cancelBubble = true;
return false;
}
}
答案 0 :(得分:5)
如果输入元素位于表单内,并且该表单实际上未提交给服务器,请删除该表单。
你的代码不起作用的原因是因为onkeydown
事件应该是小写的,而你实际上并没有在其中返回一些内容(尝试return keyPressed(holder);
- 或者只是移动{{1}将函数的代码转换为keyPressed
,因为将它作为一个单独的函数对我来说似乎毫无意义。)
答案 1 :(得分:2)
当只有一个文本输入时,无论您的按钮(如果有)是否具有type =“submit”,都会发生这种情况。它在这里记录。 http://www.w3.org/MarkUp/html-spec/html-spec_8.html#SEC8.2 因此,正如之前其他人所建议的那样,您必须简单地停止此默认行为。
答案 2 :(得分:0)
您的搜索字段是否在元素中?然后点击'enter'将一个提交事件激活到表单元素。
在这种情况下,您可以通过在表单元素上定义onsubmit来处理过滤。
<form id="searchForm">
<input type="text" name="search" />
</form>
<script>
document.getElementById('searchForm').onsubmit = function() {
var searchValue = this.search.value;
// process
return false;
}
</script>
这样的事可能。
答案 3 :(得分:0)
只需将以下javascript代码添加到Visualforce页面:
<script type='text/javascript'>
function stopRKey(evt)
{
var evt=(evt) ? evt : ((event) ? event : null);
var node=(evt.target)?evt.target:((evt.srcElement)?evt.srcElement:null);
if ((evt.keyCode == 13) && (node.type=="text")) {return false;}
}
document.onkeypress = stopRKey;
</script>