2012-06-07 4 views
3

Эта проблема кажется странной для меня, и я не могу ее исправить. У меня есть простая форма HTML; внутри, у меня есть текстовое поле и кнопку, как показано здесь:javascript window redirect не запускается

<form id="form1" method="get"> <!-- Note: No Action property --> 
    <div> 
     <h1> 
      Simple Test Form</h1> 
     <table border="0" width="400"> 
      <tr> 
       <td align="right"> 
        All of these words 
       </td> 
       <td> 
        <input name="txtAll" id="txtAll" type="text" value="testing keyword" /> 
       </td> 
      </tr> 
      <tr> 
       <td colspan="2" align="center"> 
        <input type="submit" name="Submit" value="Submit" onclick="myJS(this);" /> 
       </td> 
      </tr> 
     </table> 
    </div> 
</form> 

MyJS файл как:

<script type="text/javascript"> 
    function myJS(which) { 
     var CONSTANT_SITE_TARGET = "http://servername/redirect/target.aspx?text="; 

     //capture all values from the form 
     var allWords = document.getElementById("txtAll").value; 

     var morestring = ""; //More data manipulation here..... 
     var url = CONSTANT_SITE_TARGET + allWords + morestring; 

     window.open(url); 
     //window.location = url;   //Doesn't work 
     //window.location.href = url;  //Doesn't work 
     //self.location = url;   //Doesn't work 
     //top.location = url;    //Doesn't work 
    } 
</script> 

Как вы можете видеть, это не перенаправляет на указанный URL в JavaScript. Когда я использую window.open, тогда он работает. Обратите внимание, что в теге < ... ..., я не помещаю в него свойство . Я не хочу открывать новый браузер, просто перенаправляю на новый URL-адрес в том же браузере.

Есть ли способ перенаправить его?

ответ

0

Здесь

function myJS(which) { 
    var CONSTANT_SITE_TARGET = "http://servername/redirect/target.aspx?text="; 

    //capture all values from the form 
    var allWords = which.txtAll.value; 

    var morestring = ""; //More data manipulation here..... 
    return CONSTANT_SITE_TARGET + allWords + morestring; 
} 


<form id="form1" method="get" onsubmit="this.action=myJs(this)"> 
<div> 
    <h1> 
     Simple Test Form</h1> 
    <table border="0" width="400"> 
     <tr> 
      <td align="right"> 
       All of these words 
      </td> 
      <td> 
       <input name="txtAll" id="txtAll" type="text" value="testing keyword" /> 
      </td> 
     </tr> 
     <tr> 
      <td colspan="2" align="center"> 
       <input type="submit" name="Submit" value="Submit" /> 
      </td> 
     </tr> 
    </table> 
</div> 
</form> 

разработать на комментарий:

<script> 
window.onload=function() { 
    document.getElementById("Submit").onclick=function() { 
    var CONSTANT_SITE_TARGET = "http://servername/redirect/target.aspx?text="; 
    //capture all values from the form 
    var allWords = document.getElementById("txtAll".value; 
    var morestring = ""; //More data manipulation here..... 
    location = CONSTANT_SITE_TARGET + allWords + morestring; 
    } 
} 
</script> 
<div> 
    <h1> 
     Simple Test Form</h1> 
    <table border="0" width="400"> 
     <tr> 
      <td align="right"> 
       All of these words 
      </td> 
      <td> 
       <input name="txtAll" id="txtAll" type="text" value="testing keyword" /> 
      </td> 
     </tr> 
     <tr> 
      <td colspan="2" align="center"> 
       <input type="button" id="Submit" value="Submit" /> 
      </td> 
     </tr> 
    </table> 
</div> 
+0

Если все, что вы пытаетесь сделать, это перенаправить страницу при нажатии кнопки, нет никакой причины для формы и вашего сложного Javascript для перенаправления. Сделайте свою кнопку ввода ввода = «кнопка», onclick = «myJS();», а в вашей функции получите элемент textbox по идентификатору, получите его значение и перенаправьте браузер с помощью: window.location.href = whatever; – Ian

+0

См. Обновление @ianpgall – mplungjan

1

Не используйте теги формы. Или установите атрибут «тип» вашей кнопки как «кнопку», а не «отправить». Форма отправляется при нажатии кнопки, но вы не хотите, чтобы это произошло. Либо удаление формы, либо изменение кнопки должны исправить неправильное перенаправление. Когда вы не укажете действие, я уверен, что по умолчанию используется текущий URL.

+0

И добавить имя окна, чтобы быть совместимым - window.open (URL, «_blank»), или если вы хотите, то же самое окно, 'место = url' – mplungjan

+0

Просто используйте кнопку«»вместо«отправить»будет сделать работу. Спасибо .... – user1198464

1

Хорошо, просто идея. Поскольку вы не установили параметр action, по умолчанию кнопка submit предназначена для перезагрузки одной и той же страницы. Вы изменяете это поведение, обрабатывая его onclick. Возможно, есть конфликт, который может быть разрешен путем return false; в конце обработчика кликов, что предотвращает действие по умолчанию для этого события.

+0

BTW: "window.location.href = url;" должно сработать. – stanleyxu2005

+0

действие по умолчанию - это не перезагрузка одной и той же страницы, это отправка формы на тот же URL. перезагрузка и подача совершенно разные вещи. и возврат ложных данных; в конце кнопки отправки бессмысленно - используйте type = "button" вместо – Ian

-1

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

var CONSTANT_SITE_TARGET = "http://servername/redirect/target.aspx?text="; 

    //capture all values from the form 
    var allWords = document.getElementById("txtAll").value; 

    var morestring = ""; //More data manipulation here..... 
    var url = CONSTANT_SITE_TARGET + allWords + morestring; 

    window.location.href= url; 
    //window.navigate(url); 
    //self.location(url); 
    //top.location(url); 
Смежные вопросы