我已经填写了以下表格。是否有可能使用户输入字段数(例如6)时,下表中有6行。如果可以在没有任何提交按钮的情况下创建它(这样该动作的触发器将从文本输入框退出)将会很棒。
以下是此表单的html代码:
<fieldset>
<legend>Student Information</legend>
Number of fields: <input type="text"><br />
Total number of characters: <input type="text">
<br>
<br>
<table border="1">
<th></th>
<th>field</th>
<th>number of characters</th>
<tr>
<td>1</td>
<td><input type="text"></td>
<td><input type="text"></td>
</tr>
<tr>
<td>2</td>
<td><input type="text"></td>
<td><input type="text"></td>
</tr>
</table>
</fieldset>
如果这是不可能的(没有提交按钮),那么你会以哪种方式完成相同的结果?感谢您提供任何帮助和/或建议。
答案 0 :(得分:3)
PHP是服务器端,它只在页面加载时运行一次。 HTML不是一种编程语言。您可以使用PHP生成表,但前提是您有一个重新加载页面的提交按钮。如果由于用户事件而必须发生,则总是需要使用Javascript。
这意味着,您将需要 Javascript,无需重新加载页面即可完成此工作。理想情况下,您可以使用Jquery(Javascript最受欢迎的插件)来操作DOM。
如果您有此输入:
<input id="field" type="text">
您可以像这样调用on-leave事件:
$("p").focusout(function()
{
// Delete the previous table, and create a new one, here
});
至于创建实际表,它并不复杂,但它有点工作。您应该阅读以下参考资料来启动您:
http://www.tutorialspoint.com/jquery/jquery-dom.htm
您需要事先“安装”JQuery,您可以在代码顶部简单地插入它:
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
答案 1 :(得分:1)
只用PHP就可以了。
因此,例如,如果您输入'6'行,您可以捕获表单帖子并执行类似(HTML中的模板表单):
<?php for($i=0; $<=$_POST['rows'];$i++): ?>
<!-- This being your whatever html for the table -->
<tr><td></td></tr>
<?php endfor; ?>
答案 2 :(得分:1)
好的,这是您需要的仅发布脚本
<?php
$rows=2;
if(isset($_POST['submit']))
{
if($_POST['submit']=='Update')
{
if(isset($_POST['rows'])) $rows=max($rows, intval($_POST['rows'])); // minimum 2 rows
}
else
{
// process posted data here
// reset post or jump to another page
$_POST=array();
//header("Location:index.php");
//exit();
}
}
?>
<form method="post">
<fieldset>
<legend>Student Information</legend>
Number of fields: <input type="text" name="rows" value="<?php echo $rows; ?>"><br />
Total number of characters: <input type="text">
<input type="submit" name="submit" value="Update"/>
<br>
<br>
<table border="1">
<th></th>
<th>field</th>
<th>number of characters</th>
<?php
for($loop=1;$loop<=$rows;$loop++)
{
echo '<tr>';
echo '<td>'.$loop.'</td>';
echo '<td><input name="field['.$loop.']" value="'.$_POST['field'][$loop].'" /></td>';
echo '<td><input name="chars['.$loop.']" value="'.$_POST['chars'][$loop].'" /></td>';
echo '</tr>';
}
?>
</table>
<input type="submit" name="submit" value="Submit"/>
</fieldset>
</form>
默认为2行(最小值),并在更新行时保留数据 如果行减少,那么最终的行会消失