Javascript初学者:为什么不是我的表单提交
问题描述:
试图教自己的JavaScript在这里,所以请忍受我。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>
我基本上试图根据下拉列表中的选项的值重定向用户。谢谢。
答
弗里斯特的是,
<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();">
答
您关闭了形式的标签,当你把它声明
<form name="contextform" method="post" action="" />
.
.
</form>
改成了这一点,并再试
<form name="contextform" method="post" action="">
.
.
</form>
答
你的HTML是无效的
<form name="contextform" method="post" action="" />
应该
<form name="contextform" method="post" action="">
此外,您的函数名称窗体()是一个保留字。尝试别的名称的功能。
答
请将函数名称form()
更改为其他内容,例如myForm()
。
答
如果您在这两个函数声明更改函数的名称postForm
和在onchange处理程序中,它似乎为我工作。必须与名为“form”的全局标识符或保留字发生冲突。
答
该脚本真的是不需要的,尝试:
<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>
答
尝试更换所有document.contextform
上document.getElementsByName('contextform')
答
鼐
你有相同的键的功能名称字。这意味着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>