表格行标签中的表格

时间:2011-10-12 08:23:42

标签: html

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>

3 个答案:

答案 0 :(得分:10)

tr doesn't allow form-tags as direct children。大多数现代浏览器会让你做很多垃圾,所以你可以使用它 - 但我不会称之为 OK 。一个更好的方法是将完整的表单转换为td s之一(td s允许文本,表单,内联和块元素作为子元素):

<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>

答案 1 :(得分:1)

  

在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>

答案 2 :(得分:1)

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

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

form { margin: 0; padding: 0; }