尝试在这里自学javascript,所以请耐心等待。
为什么以下代码段不起作用?
<script type="text/javascript">
function form() {
var role_id = document.contextform.role.value;
document.contextform.action="profile/" + role_id;
document.contextform.submit();
}
</script>
<form name="contextform" method="post" action="" />
<div class="input_group">
<select name="role" style="opacity: 0;" onchange="form();">
<option value="none">Select Context</option>
<option value="4">Profile 4</option>
</select>
</div>
</form>
我基本上是尝试根据下拉列表中选项的值重定向用户。感谢。
答案 0 :(得分:3)
在声明时关闭了表单标记
<form name="contextform" method="post" action="" />
.
.
</form>
将其更改为此并再试一次
<form name="contextform" method="post" action="">
.
.
</form>
答案 1 :(得分:3)
您的HTML无效
<form name="contextform" method="post" action="" />
应该是
<form name="contextform" method="post" action="">
此外,您的函数名称 form()是保留字。尝试使用其他功能来获得该功能的名称。
答案 2 :(得分:2)
请将功能名称form()
更改为其他内容,例如myForm()
。
答案 3 :(得分:2)
首先,
<select name="role" style="opacity: 0;" onchange="form();">
那里的不透明度使它消失了。所以,你可以删除样式。
其次,名称form
似乎是保留关键字。所以,你不能使用那个名字。尝试添加其他名称,例如form_handler()
<script type="text/javascript">
function form_handler() {
var role_id = document.contextform.role.value;
document.contextform.action="profile/" + role_id;
document.contextform.submit();
}
</script>
并更改你的html(删除样式)
<select name="role" onchange="form_handler();">
答案 4 :(得分:2)
如果在函数声明和onchange处理程序中将函数名更改为postForm
,它似乎对我有用。必须与名为“form”的全局标识符或保留字冲突。
答案 5 :(得分:1)
确实不需要该脚本,请尝试:
<form name="contextform" method="post" action="/profile">
<div class="input_group">
<select name="role" style="opacity: 0;" onchange="document.contextform.submit();">
<option value="none">Select Context</option>
<option value="4">Profile 4</option>
</select>
</div>
</form>
答案 6 :(得分:1)
尝试替换document.contextform
document.getElementsByName('contextform')
答案 7 :(得分:1)
鼐
您拥有的功能名称与关键字相同。这意味着form()与标签“form”相同,因此您将收到错误,并且提交将不起作用。如果您将函数名称更改为form1(),它将执行此操作。 另一件事,role_id值是4所以行动事件中的路径将是“profile / 4”但文件扩展名不存在所以我认为你不会发送到正确的。以下是您建议的更改代码,希望它们适合您。
<script type="text/javascript">
function form1()
{
var role_id = document.contextform.role.value;
document.contextform.action="profile/" + role_id + ".html";
document.contextform.submit();
}
</script>
<form name="contextform" method="post" action="">
<div class="input_group">
<select name="role" style="opacity: 0;" onchange="form1()">
<option value="none">Select Context</option>
<option value="4">Profile 4</option>
</select>
</div>
</form>