0

我正在使用此函数来处理搜索文本框上的输入单击,但它会触发页面中的另一个按钮,如何阻止该按钮被触发并调用我的 search() 函数。

InputKeyPress(e) {
    if (window.event) {
        if (event.keyCode == 13) {
            search();
        }
    } else {
        if (e) {
           if (e.which == 13) {
               search();
           }
        }
    }
 }
4

2 回答 2

1

在这种keyCode == 13情况下,您需要阻止keypress事件的默认操作。执行此操作的标准方法是调用preventDefault事件对象上的函数(如果有的话;它在早期版本的 IE 上没有)。较旧的方法是false从您的事件处理函数返回。两者兼而有之的“腰带和大括号”方法没有真正的危害。:-)

您还可以稍微缩短您的功能:

function InputKeyPress(e) {
    var keyCode;

    e = e || window.event;
    keyCode = e.keyCode || e.which;
    if (keyCode == 13) {
        search();
        if (e.preventDefault) {
            e.preventDefault();
        }
        return false;
    }
}
于 2010-11-21T08:31:27.043 回答
1

您需要像这样添加“return false”:

function InputKeyPress(e) {
    if (!e)
        e = window.event;
    var keyCode = e.keyCode || e.which;
    if (keyCode == 13) {
        search();
        return false;
    }

    return true;
}

并将文本框中的调用更改为:

<input .... onkeypress="return InputKeyPress(event);" ...>

意味着不仅调用函数,而且“返回”它。

于 2010-11-21T08:33:08.007 回答