2

我正在尝试根据用户从下拉列表中选择的内容将我的页面重定向到不同的 url。如果用户选择“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";

4

3 回答 3

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,为什么不喝一杯酷爱饮料并停止在 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'
    }
});
于 2013-02-12T17:45:01.007 回答
3

把它<submit>变成一个普通的<button>.

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

document.forms["myForm"].submit();
于 2013-02-12T17:42:51.830 回答
3

你可以:

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

  2. 如果您希望在浏览器上处理重定向,请使用“onsubmit”属性并返回一个false值。您可以使用此函数处理重定向window.location = <URL>;

    <form onsubmit="return myJSFunc()" .. >
       ...
       <input type="submit">
    </form>
    
于 2013-02-12T17:43:43.333 回答