为什么双重表单标签会在IE中导致换行?

时间:2013-06-07 11:25:24

标签: html css forms internet-explorer

我在Web应用程序中有这个html脚本。

我知道,这是无效的HTML,因为我不应该将表单嵌入到彼此中,但如果“某人”这样做了,我怎么能防止IE中的这种奇怪行为?是否存在解决方法并在内部保留无效表单?

<html><head>
    <style>
    form{
        display: inline;
    </style>
</head>
<body>
<form>
    <table border="1">
                <tr>
                            <td>first</td>
                            <td><form>...</form></td>
                            <td>second</td>
                </tr>   
    </table>
</form>

导致Internet Explorer中“第一个”和“第二个”之间出现换行符。

它看起来像这样:

enter image description here

3 个答案:

答案 0 :(得分:4)

这是无效的HTML,这就是原因。 Internet Explorer将第二个表单的close标记解释为第一个表单的close标记。它不会* 创建第二种形式。 然而,由于这个原因,它打破了表并创建了2个表结构而不是1。这是为什么“第二个”在新行上的根本原因。

请阅读the W3 specification了解详情。这部分非常重要:

  

流内容,但没有表单元素后代。

因此,它不是Internet Explorer中的错误,它是HTML标记中的错误。 Internet Explorer只会解释与其他浏览器不同的错误HTML代码。

答案 1 :(得分:1)

float: left;用于form-coz A <form>元素是块级元素, 而且你错过了样式标签中的}

答案 2 :(得分:0)

你可以尝试设置一些CSS样式来形成,比如padding:0px;和保证金:0px;

您可能需要创建一个类名并将其应用于该类而不是一般的“表单”,否则您可能会得到不希望的结果。

顺便说一句,有些人会认为你不应该有嵌套的表格(表格中的表格)