我有一个包含多个子按钮的表单。我通过给它们不同的名称来捕捉被点击的按钮,并在处理表单的php代码中检查按钮名称。现在我想让这些按钮成为动态的,并正在寻找如何处理这一问题的解决方案。
假设我有一个像这样的数组。
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'])) {
这就是我的问题所在。如果我想使用动态数量的按钮。我如何在这里捕捉它们?除了一个值不同之外,它们都会做同样的事情,假设按下按钮的按钮ID。我该如何捕捉?我以前不知道需要多少个按钮,所以我不能为每个按钮写if语句。有人知道吗?
您可以对用于打印此表单的同一数组进行迭代,检查单击了哪个数组:
foreach($buttons as $button){
if(isset($_POST[$button['ID']])){
//action here...
}
}
echo '<input type="button" name="btn['.$button['ID'].']" value="'.$button['Name'].'" />';
然后获取您的价值
$buttons = $_POST['btn'];
foreach ($buttons as $id => $button) {
//
}
正如您已经在做的那样,有一个包含按钮名称的数组:
$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
}
}
创建一个隐藏的输入元素,比如id='btnInfo'
。现在将其添加到您的按钮元素:onClick="getBtnInfo(".$btn['ID'].")"
。创建如下所示的javascript函数:
function getBtnInfo(var i)
{
var btn=Document.getElementById('btnInfo');
btn.value=i;
}
在php脚本中,使用$_POST['btnInfo']
获取按下按钮的id。