【问题标题】:this.form.submit(); submit all form [closed]this.form.submit();提交所有表格[关闭]
【发布时间】:2014-05-27 02:14:07
【问题描述】:

这可能是一个简单的答案,但我似乎无法理解这里的逻辑。

我在同一个页面中有多个表单,并且我在大多数表单上都使用了这种结构:

<form name="" action="../charmodif/charinfo.php?charname=<?php echo $name ?>" method="post">
    <input onblur="this.form.submit();" type="text" name="actualxp" value="<?php echo $infochar['actualxp']; ?>">
<form>

我的php处理文件的主要部分: $charname = $_GET['charname'];

foreach (array_keys($_POST) as $field)
{
    mysqli_query($conn,"
    UPDATE `character`
    SET `" . $field . "`='" . $_POST[$field] . "'
    WHERE name='" . $charname . "';
    ");
}

我遇到的问题是它实际上似乎同时提交了页面中的所有表单。这导致我的 php 函数同时处理每个表单的 MySQL。

我在 php 操作中使用带有 POST 的简单 echo 验证了这一点。

在我看来,页面越大,处理数据所需的时间就越长。它主要是为了性能而不是其他任何东西,因为它实际上工作得很好。

我怎样才能让这个简单的表单只为自己提交?有什么想法吗?

谢谢,

【问题讨论】:

  • 那是因为你从不关闭表单所以你只有一个大表单,应该是&lt;/form&gt;
  • 另外,$_POST['charname'] 而不是 $_GET['charname']
  • 提交模糊?我敢打赌,这会给那些使用键盘导航的人带来严重的可用性问题。他们是如何通过第一个标签索引的?
  • 我将其用于角色扮演游戏的交互式角色表。我实际上需要在每次更改时直接在数据库中更新每个输入以模拟实时更改。这不是普通网站的常用形式:)
  • 我实际上只是发现了更好的 onchange!感谢您让我搜索它:D

标签: javascript php mysql forms


【解决方案1】:

更改最后一行:

<form name="" action="../charmodif/charinfo.php?charname=<?php echo $name ?>" method="post">
    <input onblur="this.form.submit();" type="text" name="actualxp" value="<?php echo $infochar['actualxp']; ?>">
</form>

【讨论】:

  • 谢谢。这正是我想知道的。我搜索了大约 30 分钟的错误。认为我是盲人:P
猜你喜欢
  • 1970-01-01
  • 2017-06-21
  • 2021-09-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多