【问题标题】:POST Multiple forms with same id from javascript从javascript发布具有相同ID的多个表单
【发布时间】:2011-12-22 07:34:54
【问题描述】:

我有一个小问题...我阅读了很多帖子并找到了一些答案但是...!我有多个用 PHP 代码动态创建的表单!我对每个表单都有复选框,我检查要保存的表单编辑!我的问题是,当我检查 3 个表单时,只保存了第一个,因为只有这篇文章才能保存到 save.php 页面!我对我的代码进行了一些更改:

当我按下按钮全部保存时,我可以做些什么来使此代码将所有表单发送到 save.php 页面

function save_all()
{
var all_elem=document.getElementsByTagName("*");
var same_id=new Array();
var index=0;
    var answer=confirm("The prices from checked products will change!Are you    sure");
    if(answer)
    {
        for(var i=0;all_elem.length;i++)
        {
            if(all_elem[i].id=="form1"){
            same_id[index++]=all_elem[i];
            document.forms[all_elem[i]].action="save_all.php";//error
            document.forms[all_elem[i]].submit();//error
            }
        }
    }


//this is my form and i have while loop to create multiple forms
<form id="form1" name="form[<?=$form_counter++;?>]" method="post" class="checkboxes">

【问题讨论】:

  • 多个元素不能有相同的ID。
  • 同上 - 你收到消息了吗

标签: javascript forms post


【解决方案1】:

首先,ID 必须是唯一的。期间。

http://www.w3.org/TR/html4/struct/global.html#adef-id

其次,代码太多,DOM 遍历效率很低。

var forms = document.getElementsByTagName("form");
for(var i = 0; i < forms.length; i++)
{
    forms[i].submit();
}

但我怀疑这会奏效。表单提交以某种方式重新加载页面。如何同时提交多个表单(除了将多个表单提交到不同窗口的极其晦涩的情况)?

如果它们都必须同时出现,为什么它们不以单一形式出现?

【讨论】:

    【解决方案2】:

    首先。使用唯一 ID始终

    第二。您可以使用 Ajax、jQuery 或其他您喜欢的库来一一发送表单。但更好的是,使用单个表单,将所有输入字段添加到其中。因此,当您提交表单时,所有数据都将发送到您的 PHP 脚本(提示:为每个字段使用唯一名称,以便您识别它们代表的产品)

    【讨论】:

    • +1 用于提及异步请求(因为您在技术上是正确的)。为了 OP 的利益,这可能仍然不是一个好主意,因为它使确保跨多个请求的完整性变得更加困难(例如,表格 #4 失败......现在你该怎么办?你将如何回滚其他表格的更改?) 这是可能的,但不是最好的。
    • 首先感谢您的回答!你能看到我的代码的错误 cmets 吗?如果我用警报替换它!我可以计算表单,这意味着我可以阅读它,但我不能发布它!我看到很多人使用这个 XMLHttpRequest!你的意见是什么?使 id 是唯一的还是使用 XMLHttpRequest?我尝试放弃更改表单 id,因为我有更多 javascript 代码,我使用 getElementById!如果表单标记代码是
    • @TimMedora 你是对的。这是一堆新的问题在等待:)
    • tasox 您是否尝试将所有字段包含在一个表单中?
    • 这很复杂!因为我编写了一个实用程序,它从数据库中获取所有产品,然后用户可以查看、编辑、保存、删除、取消发布它!这部分代码有效!如果我想在单个表单上执行此操作!如果用户想要更改 10 个产品的价格会发生什么?所以为了解决这个问题,我放置了复选框!用户更改价格然后检查这个产品!毕竟必须按下按钮来保存所有内容! !!但这就是问题所在......
    猜你喜欢
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 2011-04-06
    • 1970-01-01
    • 2012-11-16
    • 1970-01-01
    • 2017-06-09
    相关资源
    最近更新 更多