我有一个带有表单的页面,用布局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>