【问题标题】:Post form in while loop with javascript submit使用javascript提交在while循环中发布表单
【发布时间】:2013-02-27 08:08:35
【问题描述】:

我有一个 while 循环,它创建如下形式:

$result3 = mysql_query("SELECT * FROM Afbeeldingen WHERE ImgId =$imgid  ORDER BY                   AfbeeldingPrior DESC");

while($row3 = mysql_fetch_array($result3))
{
?>
<form method=POST name="form3" action="kamer.php">

<input type="hidden" name="id" value="<?php echo$kamerid;?>">

<input type="hidden" name="afbeeldingplus" value="12345">

</form>
<?php
}

我想用文本链接发布这些表格。 通常我使用

<script>
function f3_submit()
{
document.form3.submit();
}
 </script>

然后我输入echo "&lt;a href=\"##\" onClick=\"f3_submit();\" &gt;"; 在表格下 但是因为我有很多同名的表格,所以这行不通。 它没有发布任何内容!

如何在没有提交按钮的情况下发布这些带有文本链接的表单。

【问题讨论】:

  • 考虑开始使用模板。

标签: php javascript html


【解决方案1】:

记得返回false!

<script>
function submitForm(kamerid) {
  document.forms["form"+kamerid].submit();
  return false;
}
 </script>

并且拥有

echo '<a href="#" onClick="return submitForm(\''.$kamerid.'\');" >';

【讨论】:

    【解决方案2】:

    如果我理解正确,您希望有许多不同的表单,以及许多提交不同表单的链接?如果这是真的,您必须以不同的方式命名表单,例如使用您从 DB 获得的 ID,然后在提交链接中使用此生成的名称。

    喜欢:

    <?php
    $result3 = mysql_query("SELECT * FROM Afbeeldingen WHERE ImgId =$imgid  ORDER BY                   AfbeeldingPrior DESC");
    
    while($row3 = mysql_fetch_array($result3))
    {
    ?>
    <form method=POST name="form3_<?php echo $kamerid;?>" action="kamer.php">
        <input type="hidden" name="id" value="<?php echo $kamerid;?>">
        <input type="hidden" name="afbeeldingplus" value="12345">
    </form>
    <a href="#" onClick="document.form3_<?php echo $kamerid;?>.submit(); return false;"><?php echo $kamerid;?></a>
    <?php
    

    }

    【讨论】:

    • 仍然没有返回 false - 在某些浏览器上,这可能会导致浏览器在提交时尝试重新加载。我相信我的解决方案更优雅 - 它可以如更新所示进行调整
    • 虽然使用 '#' 应该可以防止任何重新加载,但我已经修复了代码以减少页面重新加载的任何可能性。
    • 这并不完全正确。 javascript 协议将返回调用的任何结果,除非您将其包装在 void() 中 - 如果 javascript 关闭,该链接也会出错,并在状态栏中显示一个可怕的链接。
    • 两种说法都是正确的。但是关于第一个,这里的代码不需要返回任何值。
    • 哦,我不知道,但如果我不返回任何东西,它会起作用。然而,我修复了代码。
    【解决方案3】:

    我不确定您是否以您希望的方式创建这些表单。但是,如果您对它们的方式感到满意,那么您可以添加一个提交按钮,然后将其设置为看起来像带有 css 的文本链接:

    form input[type="submit"]{
    
        background: none;
        border: none;
        color: blue;
        text-decoration: underline;
        cursor: pointer;
    }
    

    【讨论】:

      【解决方案4】:

      也许循环遍历这些值并生成两个逗号(或管道或任何适合任务)分隔的字符串,然后只创建一个表单并为“id”和“afbeeldingplus”字段分配这些值。您的 javascript 提交将正常工作,并且您的 HTML 更少,所有这些字段在一个表单或多个表单中重复。

      【讨论】:

        【解决方案5】:
        while($row3 = mysql_fetch_array($result3))
        {
        <form method=POST name="form3" action="kamer.php">
        
        <input type="hidden" name="id" value="<?php echo$kamerid;?>">
        
        <input type="hidden" name="afbeeldingplus" value="12345">
        <button type="submit">Text to Submit here</buttton>
        </form>
        }
        

        然后将按钮设置为看起来像文本

        【讨论】:

          猜你喜欢
          • 2013-01-23
          • 1970-01-01
          • 2017-12-12
          • 2021-03-22
          • 1970-01-01
          • 1970-01-01
          • 2010-09-13
          • 2014-07-25
          • 2017-09-03
          相关资源
          最近更新 更多