【问题标题】:form not getting submitted on onchange event表单未在 onchange 事件中提交
【发布时间】:2012-10-29 14:50:18
【问题描述】:

当我从下拉列表中选择任何选项时抛出错误,即 this.form.submit() 未定义 - 我的代码是这样的:

<form action="entity_report.php" method="GET" onsubmit="return makeSelection();">
    <div align="center"">
      <select name="state" onchange="this.form.submit();">
        <option>Choose One To Submit This Form</option>
        <option value="CA">CA</option>
        <option value="VA">VA</option>
     </select>
   </div>
   <input type="submit" value="Click here">
</form>

【问题讨论】:

  • 我已经测试了你的代码和它在我身边的工作

标签: php forms select drop-down-menu submit


【解决方案1】:

您可以编写 jquery 函数来选择更改 javascript

$("state").change(function() {
   $(this).closest("form").submit();
});

【讨论】:

  • 这将在选择下拉列表项时调用。因为它调用表单提交所以它最终调用'makeSelection()函数
【解决方案2】:

可能与&lt;form ... onsubmit="return makeSelection();"&gt;有关?!尝试为您的表单设置一个 id 并通过 id 访问它。

【讨论】:

    【解决方案3】:

    你也可以给你的表单一个 name="myform" 并使用:onchange="myform.submit();"

    【讨论】:

    • no.. 我也试过了,我认为它变得有冲突.. wd 我的一些代码
    【解决方案4】:

    this.form.submit() 无法定义。在这种情况下,“this”指的是您的选择标签。您的选择标签没有名为“form”的子标签。

    要做到这一点,您需要使用name 属性为表单命名,即

    <form name="myform" action="entity_report.php" method="GET" onsubmit="return makeSelection();"> 
    ... 
    </form>
    

    并通过文档访问它:

    <select name="state" onchange="document.myform.submit();">
    

    编辑
    在测试时我发现,手动提交表单时不会调用 onsubmit 事件。我发现的解决方法是在调用submit()之前添加document.myform.onsubmit();

    【讨论】:

    • 刚试过,对我来说就像一个魅力。仅在 Chrome 中进行了测试。您确定将name="myform" 添加到您的表单标签中吗?如果仍然无法正常工作,您可以尝试其他访问“myform”的方法:document.forms["myform"]document.forms.myform
    【解决方案5】:

    您可以使用javascript函数提交您的表单..

    <select name="state" onchange="submit_my_form(this);">
    
    <script>
    function submit_my_form(myfield)
    {
       myfield.form.submit();
    }
    </script>
    

    【讨论】:

      猜你喜欢
      • 2021-07-07
      • 2017-06-12
      • 2021-03-24
      • 1970-01-01
      • 2023-03-10
      • 2023-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多