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.contextformdocument.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>