【问题标题】:Get the Value First Before the Form Shows up PHP在表单显示之前先获取值 PHP
【发布时间】:2013-09-04 17:49:46
【问题描述】:

我想在表单上显示最多 10 个要提交的电子邮件字段,但只能从 1 到 10 中选择选项。

<form action="" method="post" name="select">
<select name="row">
<option value=1">1</option>
...
<option value="10">10</option
<input type="submit" name="select">
</form>

根据选择的表格显示下一个表格

<form name="secondform">
<?php ... ?>  <!--for loop depending on the value above-->
<input name="email>
</form>

【问题讨论】:

  • 我还不熟悉 jQuery。我只是在研究 PHP :(
  • 因此,如果我理解正确的话,您需要一个下拉菜单,并且您希望显示与您在菜单中选择的相同数量的电子邮件地址字段。因此,如果您选择 3,则会显示三个字段。
  • 绝对是客户端。 php 在这里绝对不能做任何事情,除非您希望 select 在 select 上提交表单并使用适当数量的表单重新加载页面。
  • @CP510 是的,我相信你可以。但我喜欢 PHP。而且我没有使用任何客户端语言。
  • 那么您将很难过,并且对用户来说很烦人。 PHP 仅在页面加载时执行,在初始页面交付后无法执行任何操作。

标签: php forms for-loop nested-forms


【解决方案1】:

所以你有你的下拉列表,将该值提交给 self 或另一个包含以下内容的 php 脚本:

$selected = $_POST['select'];

for($i = 0; $i<$selected; $i++){

     echo "<input type='text' name='email$i'>";

}

$selected是下拉菜单的值。

现在我们有了一个 for 循环。它将$i 设置为零,然后说当$i 小于下拉值的值时,将1 添加到$i 并运行echo "&lt;input type='text' name='email$i'&gt;";

如您所见,我将$i 附加到email,以便每个字段都有自己唯一的名称。

您也可以像CP510 所说的那样做,并将onchange='this.form.submit()' 添加到选择标签中,这样它就会自动提交,我会将表单提交到同一页面。此含义将选择菜单所在表单的操作设置为action="&lt;?php echo $_SERVER['PHP_SELF']; ?&gt;"


我会强烈推荐学习 jQuery 来做类似的事情。

这是 jQuery(主要是纯 javascript)版本...非常相似:

请确保将其放在 html 文件的头部:

<script src="http://code.jquery.com/jquery-latest.min.js"
        type="text/javascript"></script>

HTML:

<select id='selected' onchange='addFields();'>
    <option value='1'>1</option>
    <option value='2'>2</option>
    <option value='3'>3</option>
    <option value='4'>4</option>
    <option value='5'>5</option>
    <option value='6'>6</option>
    <option value='7'>7</option>
    <option value='8'>8</option>
    <option value='9'>9</option>
</select>

Javascript:

function addFields(){

    var selected = $('#selected').val();

    for(var i = 0; i<selected; i++){
         document.write('<input type="text" name="email' + i + '">'); 
    }

}

【讨论】:

  • 并将onchange='this.form.submit()' 添加到
  • 谢谢!我也在做一个 jsfiddle 给他。完全忘记了。
  • @EvanStoddard 谢谢好主意。我会试试的。
  • @CP510 是的,我正在学习 JS。我快到那里了。出于某种原因,我喜欢 PHP 并使用它。当您在浏览器上“查看源代码”时,我喜欢它,您不会看到所有后端代码。 PHP 只是吐出 HTML。
  • 基本上这是我能想到的最好的类比。你的餐桌上有一小盘食物,你想要更多。但是,与其在桌子上使用装有勺子的大盘子,不如走回厨房让厨师重新装满。用勺子。 :)
猜你喜欢
  • 1970-01-01
  • 2011-12-12
  • 2018-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多