2014-01-23 6 views
1

У меня есть текстовое поле и кнопка на моей веб-странице ASP. Я использую JavaScript для проверки триггера как из текстового поля, так и из кнопки. Как только проверка правильна, я пытаюсь перенаправить пользователя на другую страницу.Location.href просто перезагружает текущую страницу

Вот мой код:

HTML

<input style="background: url(images/find.png) no-repeat; padding-left:20px;"type="text" id="txtSearch" onkeyup="validChar(this);" onkeypress="checkKey(event)" name="txtSearch" /> 

<button class="locButton" id="btnsave" onclick="fncsave(event)">Search</button> 

JS

<script type="text/javascript"> 
function validChar(e) { 
    e.value = e.value.replace(/[^a-zA-Z0-9]/g, ''); 
    e.style.border = "2px inset #EBE9ED"; 
} 

function fncsave(e) { 
    //alert('test'); 
    var t = window.document.getElementById('txtSearch'); 
    if (t.value.length > 0) { 
     alert(t.value); 
     redirectPage(t.value); 
     //document.cookie = 'postbackcookie='; 
     //document.location.href = "www.mydomain.com/search.aspx?search_results.aspx?searchtext=" + t.value + "&folderid=0&searchfor=all&orderby=title&orderdirection=ascending"; 
     //return false; 
    } else { 
     e.preventDefault(); 
     t.style.border = "2px inset #CC0000"; 
     alert("Search Query is Blank..."); 
    } 
} 

function checkKey(e) { 
    var t = window.document.getElementById('txtSearch'); 
    var code = (e.keyCode ? e.keyCode : e.which); 
    if (code == 13) { //Enter keycode 
     if (t.value.length > 0) { 
      alert('enter press and ' + t.value); 
      document.cookie = 'postbackcookie='; 
      document.location.href = "www.mydomain.com/search.aspx?searchtext=" + t.value + "&folderid=0&searchfor=all&orderby=title&orderdirection=ascending"; 
      return false; 
     } else { 
      e.preventDefault(); 
      t.style.border = "2px inset #CC0000"; 
      alert('enter press and 0'); 
     } 
    } 
} 

function redirectPage(val) { 
    document.cookie = 'postbackcookie='; 
    document.location.href = "www.mydomain.com/search.aspx?search_results.aspx?searchtext=" + val + "&folderid=0&searchfor=all&orderby=title&orderdirection=ascending"; 
    return false; 
} 
</script> 

при нажатии кнопки обновления страницы и вместо того, чтобы идти к тому, что происходит, страница search_results, она просто перезагружается. Должен ли я использовать форму?

По умолчанию на странице aspx есть страница <form id="form1" runat="server"></form>, но я стараюсь избегать использования ее на сервере.

ответ

1

document.location.href с относительным путем просто изменит последнюю часть URL (т. Е. Поиск).

Чтобы изменить весь путь, вы должны добавить a/в начало.

Итак:

window.location.href = '/searchtext=sadsd'; 

сделает domain.com/some/url навигации к domain.com/newurl?searchtext=sadsd

Чтобы заменить только последнюю часть, вы должны добавить ../к началу Итак:

window.location.href = '../searchtext=sadsd'; 

сделает domain.com/some/url навигации к domain.com/newurl?searchtext=sadsd

Кроме того, вы должны использовать window.location и не document.location, как показано здесь: What's the difference between window.location and document.location in JavaScript?

+0

я ушел из части кода. Весь код: 'www.mydomain.com/search.aspx? Blah & blah & blah'. 'window.open (http://www.google.com);' работает без каких-либо проблем ... – Si8

+0

Если я использую этот код: 'window.location.href =" http://www.google.com "; 'Я вижу, что индикатор прогресса на вкладке крутится, а также отображается' google.com', но вместо этого там текущая страница просто обновляется. – Si8

+0

Я не понимаю, как то, что вы написали, связано с проблемой, о которой вы писали. вот jsfiddle: http://jsfiddle.net/bqzh8/ Первый поиск с вашим кодом, второе поле поиска - это версия, которая правильно перемещается – Etai

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