5

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

我正在寻找创建一个搜索字段,我可以在按下输入时获取文本以过滤对象并仅显示包含来自搜索字段的文本的对象。

我尝试了以下方法来尝试捕捉回车按钮,但它不起作用。

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

4 回答 4

6

如果输入元素在表单中,并且该表单实际上并未提交到服务器,则删除该表单。

您的代码不起作用的原因是因为onkeydown事件应该是小写的,并且您实际上并没有在其中返回某些内容(尝试return keyPressed(holder);- 或者只是将keyPressed函数的代码移动到setupSearchField,因为将它作为一个单独的函数)。

于 2012-05-15T11:51:09.783 回答
2

当只有一个文本输入时会发生这种情况,无论您的按钮(如果有)是否有 type="submit" 。它记录在这里。 http://www.w3.org/MarkUp/html-spec/html-spec_8.html#SEC8.2 因此,正如其他人之前建议的那样,您必须简单地停止这种默认行为。

于 2013-04-15T13:15:35.357 回答
0

您的搜索字段是否在元素内?然后点击“输入”会触发表单元素的提交事件。

在这种情况下,您可以通过在表单元素上定义 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>

可能是这样的。

于 2012-05-15T11:59:14.257 回答
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>
于 2016-02-19T15:18:30.330 回答