2009-11-23 4 views
0

У меня есть текстовое поле и всякий раз, когда пользователь нажимает клавишу, он проверяется, будет ли пользователь нажат ввести. Если нажать клавишу ввода, я хочу добавить всю информацию в текстовое поле и перенести пользователя на другой URL-адрес.Проблема с Javascript с location.href

<script language="javascript" type="text/javascript"> 
    function checkEnter(e){ //e is event object passed from function invocation 
     var characterCode; 

     if(e && e.which){ //if which property of event object is supported (NN4) 
      e = e; 
      characterCode = e.which; //character code is contained in NN4's which property 
     } 
     else{ 
      e = event; 
      characterCode = e.keyCode; //character code is contained in IE's keyCode property 
     } 

     if (characterCode == 13) { //if generated character code is equal to ascii 13 (if enter key) 
      var searchLink = '/Search/?Keywords=' + document.getElementById('<%= searchBox.ClientID %>').value; 

      transferUser(searchLink);   
      return false; 
     } 
     else{ 
      return true; 
     } 
    } 

    function transferUser(url) { 
     window.location.href = url; 
     window.location.replace(url); 
    } 
    </script> 

Search: <input name="ctl00$searchBox" type="text" id="ctl00_searchBox" class="header_line_search_box_textbox" onKeyPress="checkEnter(event);" /> 

Я пробовал все возможные комбинации, но ничего не происходит. Сайт просто освежает себя.

Мне также нужно каким-то образом преобразовать текст из пользователя в html safe, ему должно понравиться HttpUtility.EncodeUrl в aspx.

+0

бы, OnKeyPress = "JavaScript: checkEnter (событие);" Сделать разницу? –

+0

вы можете предупредить (searchLink) и посмотреть, есть ли у него какие-то странные символы? –

+1

Вам следует избегать использования атрибутов JavaScript в тегах HTML. Вместо этого вы должны программно присоединить четное к узлу. –

ответ

3

Я Не уверен, что вам нужно все это. Нормальное, встроенное поведение для следующего HTML-разметки делает именно так, как вы хотите без необходимости какого-либо JavaScript:

<form method="get" action="/Search/"> 
    <input type="text" name="Keywords"> 
</form> 

Тем не менее, важно, чтобы ваш UI иметь какое-то способ представить форму, что Безразлично» t задействовать ключевой удар. Это связано с двумя причинами:

  1. Как указал Йорн, может быть неясно, что ключ отправляет форму.
  2. Отсутствие кнопки отправки может нарушить удобство использования для пользователей, которые используют альтернативные устройства ввода.

Из-за указанных выше причин, следующий предложено:

<form method="get" action="/Search/"> 
    <input type="text" name="Keywords"> 
    <input type="submit" value="Search or 'go' or whatever"> 
</form> 
+0

Использование ASPX, но оно работает. Благодаря! – Patrick

2

Дайте это попробовать, я испытал это на месте, он работает на моей машине

function transferUser(url) { 
    window.location = url; 
} 

И вы хотите, чтобы изменить то, как вы строите свой URL к следующему

var searchCriteria = 
    escape(document.getElementById('<%= searchBox.ClientID %>').value); 
var searchLink = '/Search/?Keywords=' + searchCriteria 
Смежные вопросы