我有一个代码在单击选择框中的选项时提交表单,但我的问题是当我把它放在循环中时,它不起作用。你能帮帮我吗?
以下是代码:
<?php
$y1=5;
for($x1=1; $x1<=$y1; $x1++){
?>
<form name="myform[]" action="test.php" id ="myform" method="post">
<select id="sel_id" name="sel_name[]" onchange="submitform();">
<?php
$y=5;
for($x=1; $x<=$y; $x++){
?>
<option value="<?php echo $x;?>"><?php echo $x;?></option>
<?php
}
?>
</select>
</form>
<script type="text/javascript">
function submitform()
{
document.myform.submit();
}
</script>
<?php
}
?>
现在,我想要打印它的每个值:
<?php
echo $_POST['sel_name'];
?>
答案 0 :(得分:1)
只需在函数submitform()
中使用它:
document.getElementById("myform").submit();
编辑:我没注意到你的for循环
您在for循环中使用表单,因此每个表单都需要单独的ID。
所以试试这个:
<?php
$y1=5;
for($x1=1; $x1<=$y1; $x1++){
?>
<form name="myform[]" action="test.php" id ="myform<?php echo $x1;?>" method="post">
<select id="sel_id<?php echo $x1;?>" name="sel_name[]" onchange="submitform(<?php echo $x1;?>);">
<?php
$y=5;
for($x=1; $x<=$y; $x++){
?>
<option value="<?php echo $x;?>"><?php echo $x;?></option>
<?php
}
?>
</select>
</form>
<?php } ?>
在你的for循环之外编写你的JS函数:
function submitform(id)
{
document.getElementById("myform"+id).submit();
}
答案 1 :(得分:1)
您正在使用具有相同id="myform"
的多个表单。这对每种形式都应该是唯一的。
示例:强>
<?php
$y1=5;
For($x1=1; $x1<=$y1; $x1++){
?>
<form name="myform[]" action="test.php" id ="myform_<?=$x1?>" method="post">
<select id="sel_id" name="sel_name[]" onchange="submitform(<?=$x1?>);">
<?php
$y=5;
For($x=1; $x<=$y; $x++){
?>
<option value="<?php echo $x;?>"><?php echo $x;?></option>
<?php
}
?>
</select>
</form>
<?php
}
?>
您的Java脚本:
<script type="text/javascript">
function submitform(id)
{
document.getElementById("myform_"+id).submit();
}
</script>
您的test.php:
<?php
if(isset($_POST['sel_name']))
print_r($_POST['sel_name']);
?>
我使用不同的表单ID myform_<?=$x1?>
,并将此ID用于submitform()
函数。
根据@ Mr.Engineer,当您使用表单提交的唯一ID时,无需在submitform()
内使用java脚本函数for()
。
答案 2 :(得分:0)
请使用选择框尝试使用以下代码提交表单。
<select id="sel_id" name="sel_name[]" onchange="this.form.submit()">
...
</select>
答案 3 :(得分:0)
尝试这可能对您有所帮助
$(field).closest("form").submit();
例如,要处理onchange事件,您将拥有:
$(select your fields here).change(function() {
$(this).closest("form").submit();
});