具有多个提交按钮或多个表单的表单[重复]

Posted

技术标签:

【中文标题】具有多个提交按钮或多个表单的表单[重复]【英文标题】:Form with multiple submit buttons or multiple forms [duplicate] 【发布时间】:2019-07-27 07:44:04 【问题描述】:

我有一个文章列表,我为所有文章添加了一个提交按钮。

事实上,当我在控制器中时,我无法隐藏良好的输入,因为它将采用最后一个输入。

<form method="POST" action="url('/deleteArticle')">
@foreach($articles as $a)
         csrf_field() 

    <div class="test">
                <div class="name"><?= $a['name_a'] ?></div>
        <input type="hidden" name="id" id="ida" value='<?= $a['id_a'] ?>'/>
        <input type="submit" class="del" id="delA" class="cross" name="id">X</input>
    </div>
@endforeach
</form>

我没有使用 javascript 来解决这个问题,而是考虑循环我的文章并为它们中的每一个都设置一个表单。

这是一种不好的做法,还是我应该有一个带有一个逐篇提交按钮的表单?这个提交按钮的值不能是“X”,只能是我要删除的文章的ID,这样不利于显示。

【问题讨论】:

"这个提交按钮的值不能是"X",只能是我要删除的文章的ID,不利于显示" -> 什么意思? 在我提交的代码中,我将只有最后一个 id 而不是我点击的那个。我可以通过将我的文章的值放在提交按钮的值上来改变它,但是按钮的显示会根据它的数字而改变,但我想要一个叉号。 Two submit buttons in one form 的可能重复项。解决方案非常简单:只需确保为每个按钮指定一个唯一名称和/或唯一 ID。就是这样:) @paulsm4 我仍然需要输入按钮的值,这将擦除我的十字架。 多个具有不同值的提交按钮回答重复项应该可以工作,只需将$a['id_a'] 值放入"value" 属性中。 【参考方案1】:

您不需要为每篇文章使用单独的表单,不需要隐藏输入,也不需要 JavaScript。只需使用按钮而不是像其他答案建议的输入。如果单击这些按钮中的任何一个,它们都会提交表单,并且$_POST['id'] 将具有被单击按钮的值。

&lt;button&gt;&lt;input&gt; 不同,因为它不是自闭合标签。对于&lt;input&gt;,其值为按钮文本。但是使用&lt;button&gt;,你可以给它一个值,然后把你想要的文本放在标签之间。

这是一个基于您的代码的示例。

<form method="POST" action="url('/deleteArticle')">
    csrf_field() 
   @foreach($articles as $a)
      <div class="test">
         <div class="name"><?= $a['name_a'] ?></div>
         <button type="submit" class="del cross" name="id" value='<?= $a['id_a'] ?>' >X</button>
      </div>
   @endforeach
</form>

与问题无关,我也修复了重复的csrf_field,合并了按钮上的两个类。

【讨论】:

【参考方案2】:

使用html元素按钮:&lt;button value="id_of_your_current_article"&gt;Delete article&lt;/button&gt;

然后使用简单的 Javascript 来完成这项工作。

【讨论】:

如果可能我不想使用 javascript Javascript 有什么问题?然后为每篇文章选择一个表格......但这仍然有点奇怪

以上是关于具有多个提交按钮或多个表单的表单[重复]的主要内容,如果未能解决你的问题,请参考以下文章

具有多个不同提交按钮的 MVC 剃须刀表单?

如何在具有 Ajax 的单个表单中使用多个提交按钮 [关闭]

如何使用 jQuery 提交多个表单数据?

php一个表单提交多个页面,怎样获取按钮提交过来的值

防止使用 angular.js 提交多个表单 - 禁用表单按钮

无法保存表单的多个值[重复]