2013-04-29 3 views
0

У меня есть следующее Jquery фрагментаJquery window.location не перенаправлять но освежающий страницу

// 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); 
    }); 
+0

'alert (e.keyCode);' и посмотреть, какое значение вы получите, когда нажимаете клавишу ввода. И проверьте консоль на наличие ошибок! – musefan

+0

E.keycode правильный и никаких ошибок в консоли – StevieB

+0

Hm ... try $ ('. SearchBox') вместо $ ('. Search')? Возможно, это просто опечатка –

ответ

0

Если поисковая ящик присутствует внутри тега <form>, то нажав enter, заполните форму. Вам необходимо предотвратить отправку формы.

+0

Эй, так что да, внутри. Как я могу предотвратить его отправку? – StevieB

+0

oh ye e.preventDefault(); сделал трюк, спасибо! – StevieB

0

Если я читаю право кода, ваше определение BaseUrl должно быть либо внутри нажатием клавиши() анонимная функция, или он должен быть глобальным. В настоящее время вы используете его внутри() анонимной функции, но за пределами keypress(), которая использует baseURL только для анонимной функции внутри каждого(), и поэтому она недоступна для анонимной функции внутри keypress().

+0

Я пробовал даже делать, если (e.keyCode == 13) { window.location.href = "www.google.com"; }, но все же просто обновляет домашнюю страницу – StevieB

+0

Обработчик события нажатия клавиш должен иметь возможность «видеть» переменные, определенные в родительском закрытии. –

Смежные вопросы