问题 表格行标签中的表格


写一个是没关系的 form 在...内 tr 标签?

<table>
    % for my $word ( @$words_2 ) {
        <tr>
            <form action="/blacklist" method="post">
            <td><%=$word%></td>
            <td><input type="text" name="data" readonly hidden value="<%=$word%>" /></td>
            <td><input class="remove" type="submit" value="Remove" /></td>
            </form> 
        </tr>
    % }
</table>

5476
2017-10-12 08:23


起源

你最好不要使用表格和纯粹的Css IMO - Rob
@Rob依赖,表格适用于表格数据。不是为了布局。 - Petruza


答案:


tr  不允许 form - 作为直接孩子的标志。大多数现代浏览器会让你做很多垃圾,所以你 可以 用这个 - 但我不会叫它 。一个更好的方法是将完整的形式变成一个 tds(td允许文本,表单,内联和块元素作为子元素):

<table>
    <% for my $word ( @$words_2 ) { %>
        <tr>
            <td><%=$word%></td>
            <td>
              <form action="/blacklist" method="post">
                <input type="text" name="data" readonly hidden value="<%=$word%>" />
                <input class="remove" type="submit" value="Remove" />
              </form> 
            </td>
        </tr>
    <% } %>
</table>

或者,更简单,只需使用链接(但请注意 data 被发送使用 GET 代替 POST  - 也许你必须在你的代码中改变一些处理黑名单的东西:

<table>
    <% for my $word ( @$words_2 ) { %>
        <tr>
            <td><%=$word%></td>
            <td><a href="/blacklist?data=<%=$word%>">Remove</a></td>
        </tr>
    <% } %>
</table>

10
2017-10-12 08:28





在tr标签中写一个表单可以吗?

不。表格可以包含表格。表 细胞 可以包含表格。

我会这样解决这个问题:

<form action="/blacklist" method="post">
    <fieldset>
    <legend>Remove</legend>
    % for my $word ( @$words_2 ) {
    <label>
        <input type="checkbox" name="data" value="<%=$word%>" />
        <%=$word%>
    </label>
    % }
    </fieldset>
    <input class="remove" type="submit" value="Remove" />
</form>

1
2017-10-12 08:34





不,这不正确。表单标记必须位于表格之外或表格单元格内。

将表单标记放在表中是一个老技巧,可以防止表单占用额外的空间。你应该只使用CSS:

form { margin: 0; padding: 0; }

1
2017-10-12 08:49