0

我已经制作了下面的表格。是否有可能使当用户输入字段数(例如 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>

如果这是不可能的(没有提交按钮),那么您将以哪种方式完成相同的结果?感谢您提供任何帮助和/或建议。

4

3 回答 3

3

PHP 是服务器端,它只在页面加载时运行一次。HTML 不是一种编程语言。您可以使用 PHP 生成表格,但前提是您有一个重新加载页面的提交按钮。如果由于用户事件而必须发生,则始终需要使用 Javascript 来完成。

这意味着,您将需要Javascript 来完成这项工作,而无需重新加载页面。理想情况下,您将使用 Jquery(Javascript 最流行的插件)来操作 DOM。

如果你有这个输入:

<input id="field" type="text">

您可以像这样调用休假事件:

$("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>
于 2013-07-11T15:35:27.923 回答
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 行(最少),并在您更新行时保留数据。
如果行数减少,那么最后的行数就会消失

于 2013-07-11T15:55:22.670 回答
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; ?>
于 2013-07-11T15:44:45.573 回答