在输入文本元素中按下“enter”时停止页面刷新

时间:2012-05-15 11:47:45

标签: javascript

当在输入文本元素中按下输入按钮时,有没有办法阻止网页完全刷新?

我正在寻找创建一个搜索字段,我可以通过按下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;
    }
}

4 个答案:

答案 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>