使用javascript重定向到新的URL

时间:2013-02-12 17:39:34

标签: java javascript jsp redirect struts

我正在尝试将页面重定向到其他网址,具体取决于用户从下拉列表中选择的内容。如果用户选择“A”,则url是表单的action属性中的默认URL,但如果用户选择“B”,我想将其重定向到不同的URL。

我的问题无论我做什么,它总是重定向到默认的URL(即oldUrl.do),即使我从下拉列表中选择“B”。

我该怎么做才能将它指向newUrl.do?

注意:我正在使用Struts 1.2并在IE8上进行测试。

我的jsp页面:

<form name="myForm" method="post" action="oldUrl.do" id="myForm">

    <select name="modeOfT" id="choice"><option value="A">A</option>
        <option value="A">A</option>
        <option value="B">B</option>
    </select> 

    <input type="submit" name="submitBtn" onclick="submitForm()">
</form>

Javascript功能:

function submitForm(){
    var form = document.getElementById("myForm");
    var mode = document.getElementById("choice");
    if(mode.value == "B"){
        $(form).attr("action", "newUrl.do");
    }
} 

以下是我尝试的其他事情,他们仍然带我去“oldUrl.do”:

  1. document.location.href( “newUrl.do”);

  2. window.location.href = “newUrl.do”;

  3. top.location.href = “newUrl.do”;

  4. parent.location.href = “newUrl.do”;

  5. window.location.replace( “newUrl.do”);

  6. 了window.location = “newUrl.do”;

3 个答案:

答案 0 :(得分:4)

您不应该处理点击事件。要处理正在提交的表单,您应该使用提交事件,出于此原因以及许多其他原因(人们可以使用回车,他们可以在关注提交按钮的同时占用空间)

工作示例 http://jsfiddle.net/xv3Uf/2/

<强> HTML

<form name="myForm" method="post" action="oldUrl.do" id="myForm" onsubmit="return submitForm()" >

<强> JS

function submitForm(){
    var form = document.getElementById("myForm");
    var mode = document.getElementById("choice");
    if(mode.value == "B"){
        form.action = "newUrl.do";
    }
} 

既然你已经在使用jQuery,为什么不喝kool-aid并停止在HTML中设置JS处理程序的预启蒙实践呢? http://jsfiddle.net/xv3Uf/3/

<form name="myForm" method="post" action="oldUrl.do" id="myForm">

<强> JS

$('#myForm').submit(function(e){
    if ( $('#choice').val() === 'B') {
        this.action = 'newUrl.do'
    }
});

答案 1 :(得分:3)

<submit>变为常规<button>

在submitForm()函数中,最后调用:

document.forms["myForm"].submit();

答案 2 :(得分:3)

你可以:

  1. 让服务器根据用户在表单中选择的内容发回HTTP /重定向标头。

  2. 如果要在浏览器中处理重定向,请使用“onsubmit”属性,并返回false值。您可以使用window.location = <URL>;

    处理此功能中的重定向
    <form onsubmit="return myJSFunc()" .. >
       ...
       <input type="submit">
    </form>