我有一个包含多个提交按钮的表单。我正在捕获点击了什么按钮,给它们不同的名称,并检查处理表单的phpcode中的按钮名称。现在我想让这些按钮动态化,并正在寻找解决方案如何处理这个。
假设我有一个看起来像这样的数组。
Array
(
[0] => Array
(
[ID] => 1
[Name] => Button 1
)
[1] => Array
(
[ID] => 2
[Name] => Button 2
)
)
现在我自然地循环遍历这个数组:
foreach($buttons as $button)
echo "<input type='submit' name='".$button['ID']."' value='".$button['Name']."'>";
在页面顶部,我通过
“捕获”点击if(isset($_POST['nameofthebutton'])) {
这是我的问题所在。如果我想使用动态数量的按钮。我如何在这里捕捉它们?他们都将做同样的事情,除了一个值将是不同的,假设按下按钮的buttonid。我该如何捕捉到这个?我不知道前面需要多少按钮所以我不能在每个按钮上写一个if语句。有人有任何想法吗?
答案 0 :(得分:1)
您可以遍历用于打印此表单的相同数组,检查单击了哪一个:
foreach($buttons as $button){
if(isset($_POST[$button['ID']])){
//action here...
}
}
答案 1 :(得分:1)
echo '<input type="button" name="btn['.$button['ID'].']" value="'.$button['Name'].'" />';
然后获取你的价值
$buttons = $_POST['btn'];
foreach ($buttons as $id => $button) {
//
}
答案 2 :(得分:1)
正如您现在所做的那样,拥有一个包含按钮名称的数组:
$buttons = [['ID' => 1, 'Name' => 'some_name'], ...];
foreach($buttons as $button) {
echo '<input type="submit" name="'.$button['Name'].'" value="'.$button['ID'].'" />';
}
然后当您收到POST请求时,迭代按钮名称并检查它们是否在$ _POST中定义:
foreach ($buttons as $button) {
if (isset($_POST[ $button['Name'] ])) {
// This submit button is in $_POST
}
}
答案 3 :(得分:1)
使用id='btnInfo'
创建一个隐藏的输入元素。现在将其添加到您的按钮元素:onClick="getBtnInfo(".$btn['ID'].")"
。
创建一个javascript函数,如下所示:
function getBtnInfo(var i)
{
var btn=Document.getElementById('btnInfo');
btn.value=i;
}
在你的php脚本中使用$_POST['btnInfo']
获取按下按钮的ID。