0

我有以下 Jquery 片段

// General search
$j(".search").each(function () {
    var baseURL = "/search.aspx?c=Entire%20Site&q=";
    var searchBox = $j(this);
    searchBox.find("input").keypress(function (e) {
        if (e.keyCode == 13) {
            submitSearchValueFromTextBox(searchBox, baseURL);
        }
    });
});



submitSearchValueFromTextBox = function(searchBox, baseURL) {
        window.location.href = baseURL + escape(searchBox.find("input").val());
    };

用于输入的 HTML

<span class="searchBox">
              <span>
                <input type="text" name="searchBoxHeader" id="searchBoxHeader" value="<%= SearchLabel %>" />
              </span>
            </span>
            <span class="searchBtn">
              <a href="#" class="btnSearchTop">
                <img src="/images/search_btn.gif" name="submitHeader" id="submitHeader"/>
              </a>
            </span>

我正在测试的是,当用户按回车键将用户带到我的搜索页面时,我发现代码正常工作,因为它找到了正确的 keyCode,并且在进入重定向功能时,它只是刷新页面而不是转到它。

有任何想法吗 ?

编辑它可以很好地使用 onclick 它的输入键击不起作用

    searchBox.find("a").click(function () {
        submitSearchValueFromTextBox(searchBox, baseURL);
    });
4

2 回答 2

0

如果我正确阅读了代码,则您的 baseURL 定义需要在 keypress() 匿名函数内,或者它需要是全局的。您目前将它放在 each() 匿名函数内部,但在 keypress() 函数外部,该函数将 baseURL 的范围仅用于 each() 内部的匿名函数,因此 keypress() 内部的匿名函数无法访问它。

于 2013-04-29T16:29:05.350 回答
0

如果搜索框出现在<form>标签内,则按 Enter 将提交表单。您需要阻止表单提交。

于 2013-04-29T16:34:04.350 回答