【问题标题】:HTML FORM redirect on one input value, and process other input valuesHTML FORM 重定向一个输入值,并处理其他输入值
【发布时间】:2020-03-28 08:33:52
【问题描述】:

坚持使用 POST 方法实现标准 HTML 表单。

我有一个包含 4 个不同字段的简单 HTML/PHP 表单(比如 https://example.com/dir/BBB.php):

<form method="post" action="<what-to-put-here>.php" target="_top">

  <input type="text" name="name" placeholder="Name..." value="Input Name" required>

  <span>Code:</span><select name="code" required><option value="" disabled selected>Choose Code</option><option value='AAA'>AAA</option><br><option value='BBB'>BBB</option><br><option value='CCC'>CCC</option><br><option value='DDD'>DDD</option></select>

  <span>Start Date:</span><select name="startdt" required><option value='2019-11-29'>Fri, 29Nov19</option><br><option value='2019-11-27'>Wed, 27Nov19</option><br><option value='2019-11-26'>Tue, 26Nov19</option><br><option value='2019-11-25'>Mon, 25Nov19</option><br><option value='2019-11-22'>Fri, 22Nov19</option><br></select>

  <span>End Date:</span><select name="enddt" required><option value='2019-11-29'>Fri, 29Nov19</option><br><option value='2019-11-27'>Wed, 27Nov19</option><br><option value='2019-11-26'>Tue, 26Nov19</option><br><option value='2019-11-25'>Mon, 25Nov19</option><br><option value='2019-11-22'>Fri, 22Nov19</option><br></select>

  <input type="submit" value="Submit">

</form>

有两个要求:

1) 所有 4 个字段均为必填项。一旦用户填写/选择值并点击“提交”按钮,需要从提交的表单中接收“代码”的值,然后根据为“代码”字段选择的值,它应该重定向到https://example.com/dir/&lt;code&gt;.php网址。

2) 用户提交的其余三个值(name、startdt 和 enddt)也应该在重定向的 URL 中接收(比如在 PHP 变量中,$start_date= $_POST["startdt"]

为了清楚地举一个例子,假设用户在https://example.com/dir/BBB.php 上提交值,并选择/输入值为 (name="Michael", code="DDD", startdt='2019- 11-29', enddt='2019-12-01')。然后在点击提交按钮时,他应该被带到https://example.com/dir/DDD.php 页面(因为他已经提交了 DDD 代码),其中其他三个值(name="Michael", startdt='2019-11-29', enddt=' 2019-12-01') 也应该可以在 PHP 变量中捕获。

我尝试过使用中间文件,以及使用 onchange 位置功能,但无法达到预期的效果。任何帮助将不胜感激。

【问题讨论】:

  • 这是你应该用 JS 做的事情。在更改代码输入时,您会更改表单标记中的操作
  • 对于第 2 部分,我建议您使用会话
  • 对于第 1 部分,如果不查看后端代码,很难判断出什么问题
  • @Cid,第一部分是重定向。当我使用自动重定向到新 URL 的 onchange 位置功能时,其余 3 个值无法在页面移动时被捕获。这就是为什么我一直在寻找一种同时满足这两个要求的整体方法。我还想过将代码作为 LAST 字段,以便可以更早地捕获其他三个值,但我需要将“代码”作为第二个字段。
  • 您可以使用 $_SESSION 在重定向之前存储值并在下一个脚本中获取它们。

标签: php html forms post


【解决方案1】:

要在提交之前更改表单的目的地,您需要使用 JS。 从这种形式开始,使用 jquery 的基本解决方案是:

   $('#code_switch').change(function(){
        page = $(this).val();
        page = page +'.php';
        $('#form_target').attr('action',page);
        console.log(page);
    });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form method="post" action="AAA.php" target="_top" id="form_target">
    
      <input type="text" name="name" placeholder="Name..." value="Input Name" required>
    
      <span>Code:</span><select name="code" id="code_switch"required><option value="" disabled selected>Choose Code</option><option value='AAA'>AAA</option><br><option value='BBB'>BBB</option><br><option value='CCC'>CCC</option><br><option value='DDD'>DDD</option></select>
    
      <span>Start Date:</span><select name="startdt" required><option value='2019-11-29'>Fri, 29Nov19</option><br><option value='2019-11-27'>Wed, 27Nov19</option><br><option value='2019-11-26'>Tue, 26Nov19</option><br><option value='2019-11-25'>Mon, 25Nov19</option><br><option value='2019-11-22'>Fri, 22Nov19</option><br></select>
    
      <span>End Date:</span><select name="enddt" required><option value='2019-11-29'>Fri, 29Nov19</option><br><option value='2019-11-27'>Wed, 27Nov19</option><br><option value='2019-11-26'>Tue, 26Nov19</option><br><option value='2019-11-25'>Mon, 25Nov19</option><br><option value='2019-11-22'>Fri, 22Nov19</option><br></select>
    
      <input type="submit" value="Submit">
    
    </form>

为了简单起见,我在表单和选择中添加了一个 id 属性。 在您按下提交按钮之前不会提交表单,并且目的地将基于您在代码选择中选择的内容

【讨论】:

  • 完美运行!非常感谢@LelioFaieta,用+1标记答案。不过,对于我在测试上述内容时发现的其他人的一个注意事项:它被重定向到的页面必须存在,并且它的名称必须与选项值中的完全相同(区分大小写)。选项值不能为AAA,页面名不能为aaa.php,否则其他字段值不会被捕获。
猜你喜欢
  • 2022-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-19
  • 2016-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多