不匹配的结束标签是否足以阻止IE11提交表单?


Are unmatched end tags enough to stop IE11 submitting a form?

我有一个带有表单的页面,用布局div分成两部分。右侧则根据用户之前的选择动态生成输入,即他们预订了多少用户。

全部由PHP处理。表单操作被设置为页面本身。在提交时对表单进行验证,如果验证通过,则将用户重定向到下一步。如果验证失败,则相应生成错误消息。

在Firefox和Chrome中可以正常工作,但在IE11中不能,除非设置为IE8兼容模式。在IE11(以及ie10和ie9兼容模式)中,当我点击提交按钮时,绝对没有任何反应。控制台不会记录任何错误,也不会提交任何内容,页面也不会重新加载。在IE8模式下,它可以正常工作。

页面加载时出现的唯一控制台警告是两个不匹配的结束标记。它发现的第一个不匹配是第一个关闭</div>标记。第二个不匹配是结束的</form>标记。

<div class="6u">
    <form id="buy-form" name="details" action="booking3.php" method="post">
        <fieldset>
            <legend>Enter Billing Details</legend>
            <label for="first_name" class="register">First Name</label>
            <input type="text" id="fname" name="first_name" class="textbox booking required" size="20" maxlength="20"
                   value="<?php if (isset($_SESSION['first_name'])) {
                       echo $_SESSION['first_name'];
                   } ?>"/><br/>
            <label for="last_name" class="register">Last Name</label>
            <input type="text" id="lname" name="last_name" class="textbox booking required" size="20" maxlength="20"
                   value="<?php if (isset($_SESSION['last_name'])) {
                       echo $_SESSION['last_name'];
                   } ?>"/><br/>
            <label for="email" class="register">E-mail Address</label>
            <input type="email" id="emai" name="email" class="textbox booking required" size="20" maxlength="60"
                   value="<?php if (isset($_SESSION['email'])) {
                       echo $_SESSION['email'];
                   } ?>"/><br/>
            <label for="telephone" class="register">Telephone</label>
            <input type="text" id="tel" name="telephone" class="textbox phonenumber booking required" size="20"
                   maxlength="20" value="<?php if (isset($_SESSION['telephone'])) {
                    echo $_SESSION['telephone'];
                } ?>"/><br/>
            <label for="address">Billing Address</label>
            <textarea class="order required" name="address"><?php if (isset($_SESSION['address'])) {
                    echo $_SESSION['address'];
                } ?></textarea>
        </fieldset>
</div>
<?php
if ($_SESSION['userno'] >= 1) { // if more than one user is selected, display text boxes to take extra user details
    echo '<div class="6u content content-right">';
    if ($_SESSION['userno'] == 1) {
        echo '<span>Please enter the name, e-mail address and telephone number of your user.</span><br/>';
    } else {
        echo '<span>Please enter the names, e-mail addresses and telephone numbers of your '.$_SESSION['userno'].' users.';
    }
    for ($i = 0; $i < $_SESSION['userno']; $i++) { //create textboxes for the appropriate amount of users based on userno selection
        echo '<fieldset><legend>User '.($i + 1).'</legend>';
        if ($i == 0) {
            echo '<label class="register">As Billing Details</label><input id="userisbooker" type="checkbox" class="booking"/><br/>';
        }
        echo '<label for="userFname[]" class="register">First Name: </label><input type="text" id="fname'.$i.'" name="userFname[]" class="textbox booking required" value="';
        if (isset($_SESSION['userFname'][$i])) {
            echo $_SESSION['userFname'][$i];
        }
        echo '"/><br/>';
        echo '<label for="userLname[]" class="register">Last Name: </label><input type="text" id="lname'.$i.'" name="userLname[]" class="textbox booking required" value="';
        if (isset($_SESSION['userLname'][$i])) {
            echo $_SESSION['userLname'][$i];
        }
        echo '"/><br/>';
        echo '<label for="userEmail[]" class="register">E-mail Address: </label><input type="email" id="email'.$i.'" name="userEmail[]" class="textbox booking required" value="';
        if (isset($_SESSION['userEmail'][$i])) {
            echo $_SESSION['userEmail'][$i];
        }
        echo '"/><br/>';
        echo '<label for="userTel[]" class="register">Telephone: </label><input type="text" id="tel'.$i.'" name="userTel[]" class="textbox booking required" value="';
        if (isset($_SESSION['userTel'][$i])) {
            echo $_SESSION['userTel'][$i];
        }
        echo '"/><br/>';
        echo '</fieldset>';
    }
    echo '<input class="button button-alt" type="submit" name="submit" value="Next >"/></form>';
}
?>
</div>

是什么导致IE11出现这个问题?这两个不匹配的标签(对我来说似乎是匹配的)是否足以使整个页面崩溃?

应该是这样的;在关闭表单之前,不要关闭启动表单的元素。

<form id="buy-form" name="details" action="booking3.php" method="post">
    <div class="6u">
        <fieldset>
            <legend>Enter Billing Details</legend>
            <label for="first_name" class="register">First Name</label><input type="text" id="fname" name="first_name" class="textbox booking required" size="20" maxlength="20" value="<?php if(isset($_SESSION['first_name'])){echo $_SESSION['first_name'];}?>"/><br/>
            <label for="last_name" class="register">Last Name</label><input type="text" id="lname" name="last_name" class="textbox booking required" size="20" maxlength="20" value="<?php if(isset($_SESSION['last_name'])){echo $_SESSION['last_name'];}?>"/><br/>
            <label for="email" class="register">E-mail Address</label><input type="email" id="emai" name="email" class="textbox booking required" size="20" maxlength="60" value="<?php if(isset($_SESSION['email'])){echo $_SESSION['email'];}?>"/><br/>
            <label for="telephone" class="register">Telephone</label><input type="text" id="tel" name="telephone" class="textbox phonenumber booking required" size="20" maxlength="20" value="<?php if(isset($_SESSION['telephone'])){echo $_SESSION['telephone'];}?>"/><br/>
            <label for="address">Billing Address</label><textarea class="order required" name="address"><?php if(isset($_SESSION['address'])){echo $_SESSION['address'];}?></textarea>
        </fieldset>
    </div>
        <?php
            if ($_SESSION['userno'] >= 1){ // if more than one user is selected, display text boxes to take extra user details
                echo '<div class="6u content content-right">';
                if ($_SESSION['userno'] == 1){
                    echo '<span>Please enter the name, e-mail address and telephone number of your user.</span><br/>';
                } else{
                    echo '<span>Please enter the names, e-mail addresses and telephone numbers of your '.$_SESSION['userno'].' users.';
                }
                for ($i = 0; $i < $_SESSION['userno']; $i++){ //create textboxes for the appropriate amount of users based on userno selection
                    echo '<fieldset><legend>User '. ($i+1).'</legend>';
                    if ($i == 0){
                        echo '<label class="register">As Billing Details</label><input id="userisbooker" type="checkbox" class="booking"/><br/>';
                    }
                    echo '<label for="userFname[]" class="register">First Name: </label><input type="text" id="fname'.$i.'" name="userFname[]" class="textbox booking required" value="'; if(isset($_SESSION['userFname'][$i])){echo $_SESSION['userFname'][$i];} echo'"/><br/>';
                    echo '<label for="userLname[]" class="register">Last Name: </label><input type="text" id="lname'.$i.'" name="userLname[]" class="textbox booking required" value="'; if(isset($_SESSION['userLname'][$i])){echo $_SESSION['userLname'][$i];} echo'"/><br/>';
                    echo '<label for="userEmail[]" class="register">E-mail Address: </label><input type="email" id="email'.$i.'" name="userEmail[]" class="textbox booking required" value="'; if(isset($_SESSION['userEmail'][$i])){echo $_SESSION['userEmail'][$i];} echo'"/><br/>';
                    echo '<label for="userTel[]" class="register">Telephone: </label><input type="text" id="tel'.$i.'" name="userTel[]" class="textbox booking required" value="'; if(isset($_SESSION['userTel'][$i])){echo $_SESSION['userTel'][$i];} echo'"/><br/>';                                      
                    echo '</fieldset>';
                }
                echo '<input class="button button-alt" type="submit" name="submit" value="Next >"/>';
                echo '</div>';
            }
        ?>
</form>