具有多个提交按钮或多个表单的表单[重复]
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']
将具有被单击按钮的值。
<button>
与<input>
不同,因为它不是自闭合标签。对于<input>
,其值为按钮文本。但是使用<button>
,你可以给它一个值,然后把你想要的文本放在标签之间。
这是一个基于您的代码的示例。
<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元素按钮:<button value="id_of_your_current_article">Delete article</button>
然后使用简单的 Javascript 来完成这项工作。
【讨论】:
如果可能我不想使用 javascript Javascript 有什么问题?然后为每篇文章选择一个表格......但这仍然有点奇怪以上是关于具有多个提交按钮或多个表单的表单[重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何在具有 Ajax 的单个表单中使用多个提交按钮 [关闭]