如何在循环中提交没有提交按钮的选择菜单?

时间:2016-02-17 05:52:33

标签: javascript php html

我有一个代码在单击选择框中的选项时提交表单,但我的问题是当我把它放在循环中时,它不起作用。你能帮帮我吗?

以下是代码:

<?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'];
?>

4 个答案:

答案 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();
});