【问题标题】:HTML - input field jumps out of html tableHTML - 输入字段跳出 html 表格
【发布时间】:2021-12-27 14:13:07
【问题描述】:

我有一个“动态”表,有人可以在其中更改某人的信息。单击“更新”时,单元格应更改为输入字段。这可行,但不知何故,输入字段跳出表格并位于表格上方。

这是显示表格的函数的一部分:

 echo '<tr>';
        echo '<td><b>' . ucfirst(htmlspecialchars($data)) . '</b></td>'; 
        if($url_param_index[1] == $info) // Checks if second url-parameter is same as $info on row that is clicked on and changes cell to form input field
        {       
            echo '<form action="update.php method="POST"';                  
            echo '<td><input type="text" name="' . $data . '" value="' . $info . '"></td>';
            echo '<input type="hidden" name="lidnummer" value="' . $gegevens_lid['lidnummer'] . '">';
            echo '<td><button type="submit">Save</button></td>';
            echo '<td>----</td>';
            echo '</form>';
        }
        else
        {
            if($data == 'lidnummer' || $data == 'adres' || $data == 'woonplaats')
            {
                echo '<td>' . htmlspecialchars($info) . '</td>';
                echo '<td> ---- </td>';
                echo '<td> ---- </td>';
                
            } 
            else
            {
                echo '<td>' . htmlspecialchars($info) . '</td>';
                echo '<td><a href="lid.php?lidnummer=' . $gegevens_lid['lidnummer'] . '&' . $data . '=' . $info . '">Update</td>';
                echo '<td> ---- </td>';
            }            
        }
        echo '</tr>';
   

这是调用函数以显示表格的页面:

<div>
    <h3>Lid:</h3>
    <table>
        <tbody>
            <tr>
                <th>#</th>
                <th>Info</th>
                <th>Pas aan</th>
                <th>Delete</th>
            </tr>
            <?php show_single_lid($conn, $lidnummer); ?>          
        </tbody>
    </table>
</div>

点击更新前

点击更新后

输入字段应该留在表格中的同一行/列,但它会跳出,其余部分滑过...

【问题讨论】:

  • 请同时提供javascript代码
  • 这里没有javascript:p
  • echo '&lt;form action="update.php method="POST"'; 缺少 &gt; 以关闭 &lt;form&gt; 标记。如果这是导致问题的原因,请不要这样做,但在提交之前尝试整理代码:)
  • 另外,请确保您只包含 &lt;td&gt; 元素作为 &lt;tr&gt; 的直接子元素。将&lt;form&gt; 作为&lt;tr&gt; 的直接子代可能会导致问题...

标签: php html input html-table


【解决方案1】:

form 不允许在 table 或 tr 标签内。因此,您的表单应该包含整个表格或位于单个单元格中。

例如(注意表格在单个单元格内):

echo '<td><form action="update.php" method="POST">';                  
echo '<input type="text" name="' . $data . '" value="' . $info . '">';
echo '<input type="hidden" name="lidnummer" value="' . $gegevens_lid['lidnummer'] . '"><button type="submit">Save</button></form></td>';
echo '<td></td>';
echo '<td>----</td>';

另见https://stackoverflow.com/a/5967613/13891891

【讨论】:

  • 好吧,这里的“保存”按钮跳转到包含输入字段的单元格,在上面的“解决方案”中它没有但仍然有效。我为什么要这样做?
【解决方案2】:

尝试将您的 PHP 代码更改为此。

 echo '<tr>';
        echo '<td><b>' . ucfirst(htmlspecialchars($data)) . '</b></td>'; 
        if($url_param_index[1] == $info) // Checks if second url-parameter is same as $info on row that is clicked on and changes cell to form input field
        {       
            echo '<td><form action="update.php method="POST"';                  
            echo '<td><input type="text" name="' . $data . '" value="' . $info . '"></td>';
            echo '<input type="hidden" name="lidnummer" value="' . $gegevens_lid['lidnummer'] . '">';
            echo '<td><button type="submit">Save</button></td>';
            echo '<td>----</td>';
            echo '</form></td>';
        }
        else
        {
            if($data == 'lidnummer' || $data == 'adres' || $data == 'woonplaats')
            {
                echo '<td>' . htmlspecialchars($info) . '</td>';
                echo '<td> ---- </td>';
                echo '<td> ---- </td>';
                
            } 
            else
            {
                echo '<td>' . htmlspecialchars($info) . '</td>';
                echo '<td><a href="lid.php?lidnummer=' . $gegevens_lid['lidnummer'] . '&' . $data . '=' . $info . '">Update</td>';
                echo '<td> ---- </td>';
            }            
        }
        echo '</tr>';

【讨论】:

  • 这似乎可行,但我真的不知道为什么。据我所知,只在
    之前添加了一个 td 标记,在
    之后添加了 并且它可以工作。你能解释一下吗?
  • td 标签用作表格列。
  • @Xavvey 您不能像您尝试的那样将表单嵌套到表格中。表单元素要么必须围绕 整个 表格,要么需要包含在单个表格单元格中。其他任何内容都是无效的 HTML,当浏览器应用错误纠正时,它将构建一个与您想要的不同的 DOM。
  • (这意味着这里提出的“解决方案”实际上仍然不正确。)
猜你喜欢
  • 1970-01-01
  • 2017-03-07
  • 2014-03-06
  • 1970-01-01
  • 2021-02-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-02
相关资源
最近更新 更多