Javascript初学者:为什么我的表单没有提交

时间:2011-09-23 05:32:25

标签: 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>

我基本上是尝试根据下拉列表中选项的值重定向用户。感谢。

8 个答案:

答案 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>