通过按键事件触发功能时无​​法从 IE 中的文本框获取值

Cannot Get Value From Text box in IE When Triggering Function Via Key Event

我的网站上有一个搜索框,可以通过单击搜索按钮或在搜索框处于焦点状态时按回车键来使用。我遇到的问题 只发生在 Internet Explorer 中(不幸的是我必须支持它)。

单击按钮执行搜索时,一切都按计划进行。 但是,当按回车 时,我遇到了一些奇怪的行为。 在调试 javascript 时,我可以看到搜索查询是空的。 这是我正在使用的所有 javascript,单击按钮和回车都可以使用同样的搜索功能。

$(document).ready(function () {
    var input = document.getElementById("txtSearch");
    if (input) {
        input.addEventListener("keyup", function (event) {
            //if the user hits enter
            if (event.keyCode == 70) {
                event.preventDefault();
                search();
            }
        });
    }
})


function search() {
    var searchstring = $('#txtSearch').dxTextBox('instance').option('value');
    //only search if there is a value in the text box
    if (searchstring != "") {         
        var url = window.location.origin + "/Search" + "?searchquery=" + encodeURIComponent(searchstring);
        window.location.href = url;
    }
}

搜索功能的第一行就是问题所在。点击回车键后,该函数被触发,搜索字符串被设置为空字符串,而不是文本框中的内容。

您的事件监听器中已经有该事件。我建议您将 event.target.value 传递给您的搜索功能。这使它更具功能性。拥有一个获取自己信息的函数是一种糟糕的模式。

总结:

  1. 从您的活动中获取价值:event.target.value
  2. 将其作为参数传递给搜索
  3. 在函数中使用参数而不是获取搜索字符串