我正在尝试将页面重定向到其他网址,具体取决于用户从下拉列表中选择的内容。如果用户选择“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”:
document.location.href( “newUrl.do”);
window.location.href = “newUrl.do”;
top.location.href = “newUrl.do”;
parent.location.href = “newUrl.do”;
window.location.replace( “newUrl.do”);
了window.location = “newUrl.do”;
答案 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)
你可以:
让服务器根据用户在表单中选择的内容发回HTTP /重定向标头。
如果要在浏览器中处理重定向,请使用“onsubmit”属性,并返回false
值。您可以使用window.location = <URL>;
<form onsubmit="return myJSFunc()" .. >
...
<input type="submit">
</form>