HTML 按钮虽然未被点击,但默认提交到下一个 php 页面
HTML button getting submitted by default to next php page although not clicked
我创建了两个 .php 网页。第一页有以下代码:
sample1.php
<?php
echo "<html>";
echo "<body>";
echo "<form action=\"sample2.php\" method=\"post\">";
echo "<table width='100%'>";
echo "<tr><td width='30%'><font size='5' color='#003399'>Message 1</font></td><td align='center' width='50%'><font size='5' color='#003399'>Message 2</font></td></tr>";
for ($i=0;$i<5;$i++) {
if($i == 0)
{
echo "<tr><td bgcolor=\"#EAEAEA\" style=\"color:#003399\">$i</td><td align='center'><input type='text' name='tarea'></td></tr>";
}
else
{
echo "<tr><td bgcolor=\"#EAEAEA\" style=\"color:#003399\">$i</td></tr>";
}
echo "<tr><td><div>";
echo "<input type=\"submit\" name=\"version\" value=\"ant\"> ";
echo "<input type=\"submit\" name=\"version\" value=\"bat\"> ";
echo "<input type=\"submit\" name=\"version\" value=\"cat\"> ";
echo "</div></tr></td>";
}
echo "</table>";
echo "</form>";
echo "</body>";
echo "</html>";
?>
第二页如下:
sample2.php
<?php
$vers = $_POST['version'];
$area = $_POST['tarea'];
echo "This is selected value: $vers<br>";
echo "this is textbox value: $area<br>";
?>
当我单击 sample1.php 上的按钮时,它会按预期传递到下一页。但是,当我在文本框中输入一个值并按回车键时,第一个按钮也会默认与文本框值一起提交。
预期输出:
如果在 sample1.php 上单击按钮,则应将相同的按钮传递给 sample2.php。接下来,如果在 sample1.php 上的文本区域中输入了一个值,则只有该值应该传递给 sample2.php 而不是按钮值。
谢谢,
麦迪
您需要做的是检查提交是否已设置并等于输入的给定值。
这只是执行此操作的一种方法。还有其他方法。
if(isset($_POST['version']) && $_POST['version'] == 'ant'){
$vers = $_POST['version'];
// ant was fired
}
if(isset($_POST['version']) && $_POST['version'] == 'bat'){
$vers = $_POST['version'];
// bat was fired
}
if(isset($_POST['version']) && $_POST['version'] == 'cat'){
$vers = $_POST['version'];
// cat was fired
}
旁注:不过我会删除那些
。它们可能会对 PHP 产生不利影响。分号是语句结束字符。
编辑:
foreach
和传递键值的示例:
$var = "";
foreach($_POST['version'] as $key => $value) {
if(!empty($value)) {
$var .= $key. "='".$value."',";
}
}
我创建了两个 .php 网页。第一页有以下代码:
sample1.php
<?php
echo "<html>";
echo "<body>";
echo "<form action=\"sample2.php\" method=\"post\">";
echo "<table width='100%'>";
echo "<tr><td width='30%'><font size='5' color='#003399'>Message 1</font></td><td align='center' width='50%'><font size='5' color='#003399'>Message 2</font></td></tr>";
for ($i=0;$i<5;$i++) {
if($i == 0)
{
echo "<tr><td bgcolor=\"#EAEAEA\" style=\"color:#003399\">$i</td><td align='center'><input type='text' name='tarea'></td></tr>";
}
else
{
echo "<tr><td bgcolor=\"#EAEAEA\" style=\"color:#003399\">$i</td></tr>";
}
echo "<tr><td><div>";
echo "<input type=\"submit\" name=\"version\" value=\"ant\"> ";
echo "<input type=\"submit\" name=\"version\" value=\"bat\"> ";
echo "<input type=\"submit\" name=\"version\" value=\"cat\"> ";
echo "</div></tr></td>";
}
echo "</table>";
echo "</form>";
echo "</body>";
echo "</html>";
?>
第二页如下:
sample2.php
<?php
$vers = $_POST['version'];
$area = $_POST['tarea'];
echo "This is selected value: $vers<br>";
echo "this is textbox value: $area<br>";
?>
当我单击 sample1.php 上的按钮时,它会按预期传递到下一页。但是,当我在文本框中输入一个值并按回车键时,第一个按钮也会默认与文本框值一起提交。
预期输出:
如果在 sample1.php 上单击按钮,则应将相同的按钮传递给 sample2.php。接下来,如果在 sample1.php 上的文本区域中输入了一个值,则只有该值应该传递给 sample2.php 而不是按钮值。
谢谢,
麦迪
您需要做的是检查提交是否已设置并等于输入的给定值。
这只是执行此操作的一种方法。还有其他方法。
if(isset($_POST['version']) && $_POST['version'] == 'ant'){
$vers = $_POST['version'];
// ant was fired
}
if(isset($_POST['version']) && $_POST['version'] == 'bat'){
$vers = $_POST['version'];
// bat was fired
}
if(isset($_POST['version']) && $_POST['version'] == 'cat'){
$vers = $_POST['version'];
// cat was fired
}
旁注:不过我会删除那些
。它们可能会对 PHP 产生不利影响。分号是语句结束字符。
编辑:
foreach
和传递键值的示例:
$var = "";
foreach($_POST['version'] as $key => $value) {
if(!empty($value)) {
$var .= $key. "='".$value."',";
}
}