【问题标题】:How to submit form without submit button如何在没有提交按钮的情况下提交表单
【发布时间】:2015-09-24 14:28:00
【问题描述】:

我正在尝试提交没有提交按钮的表单。我使用此代码提交:document.forms['form_id'].submit();但是这段代码一遍又一遍地提交。我只想提交一次

<form method="POST" id="form_id">
<input type="hidden" id="lan" value="" name="number">
</form>


 <script type="text/javascript">

 document.forms['form_id'].submit();

 </script>

【问题讨论】:

  • 是否存在必须触发表单提交的条件?
  • 因为页面被一遍又一遍地加载和重新加载(在您重新加载 POST 页面然后一次又一次地调用 submit() 之后......)
  • 如果在这种情况下没有条件,我建议使用 ajax。请查看this post
  • 如果您只想提交一次,另一种解决方案是先设置一个 cookie,并且始终仅在未设置该 cookie 时提交。

标签: javascript forms


【解决方案1】:

每次加载 javascript,即每次加载页面时,表单都会自行提交。表单的默认行为是提交到您当前所在的位置,如果未定义,您将不断地将表单提交到包含该表单的页面并再次提交该表单。

如果您希望此提交只发生一次,例如当访问者被(重新)定向到此页面时,您应该使用表单的 action 属性提交到另一个页面。

如果您希望在用户请求时提交,请将您的提交包装在一个函数中,该函数由按钮上的 onclick 事件或任何其他事件调用。

<script>
    function submittheform(){
        document.forms['form_id'].submit();
    }
</script>

<form method="POST" id="form_id" action="someHandlerUrl">
    <input type="hidden" id="lan" value="" name="number"/>
    <input type="button" onclick="submittheform()" value="submit the form"/>
</form>

你可以在 PHP 中使用这个脚本来构建你的页面;

<?php
if(isset($_POST['number'])){
    $number = $_POST['number'];
    $out = '<h1>The form was submitted</h1>';
}else{
    $out = '
    <h1>The form needs to be submitted</h1>
    <form method="POST" id="form_id">
        <input type="hidden" id="lan" value="" name="number">
    </form>
    <script type="text/javascript">
        document.forms[\'form_id\'].submit();
    </script>
    ';
}

echo $out;

?>

当表单提交并且数字值存在时, 它显示一个没有脚本和表单的页面。

【讨论】:

  • 问题是我不想使用任何按钮。我希望该代码将提交一次,并且我不需要重定向到另一个页面,因为我只需要将值从 html 标签传输到 php 代码
  • 我在解决方案中添加了另一部分
  • 您首先希望您的价值来自哪里?在您的演示表单中,输入的值为“”,这意味着什么,该值是在表单提交后读取的,使用 $_POST 数组中的数据,之后您如何处理它取决于您..
【解决方案2】:
<form method="POST" action="" id="mailform">
<input type="email" name="mail" placeholder="EMAIL" id="mail">
<div id="sub" onclick="mailsubmit()">Click Me to Submit</div>
</form>
<script type="text/javascript">
function mailsubmit(){
document.getElementById("mailform").submit();
var mailid = document.getElementById("mail").value;
return mailid?alert(mailid):alert("You did not submit your Email");
}
</script> 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-20
    • 2011-12-04
    • 1970-01-01
    • 2016-08-29
    • 1970-01-01
    • 2011-04-02
    • 2015-07-30
    • 1970-01-01
    相关资源
    最近更新 更多