【html】button按钮的一些问题

时间:2022-05-11 14:09:56

问题:

button 按钮在不设置 type 属性时,在不同的浏览器作用不一样。举个例子:

html:

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
<meta name="renderer" content="webkit"/>
<meta name="keywords" content=""/>
<meta name="description" content=""/>
<title>button按钮的一些问题</title>
</head>
<body>
<form action="result.php" method="post">
<input type="text" name="txt" placeholder="随便输入点什么吧!" autocomplete="off"/>
<button>button点击提交</button>
</form>
</body>
</html>

result.php:

<?php echo $_POST['txt'] ?>

我们发现,在 ie8 以上包括 ie8 点击按钮可以正常提交表单,但是在 ie6 和 ie7 下面,点击按钮没有反应。

原因:

为什么会有差异?因为 button 按钮没有设置 type 属性,在不同的浏览器中解析 button 的 type 类型不尽相同。

通过 w3school 可以发现,我们需要始终为 button 按钮规定 type 属性。Internet Explorer(经测试是 ie6 和 ie7)的默认类型是 "button",而其他浏览器中(包括 W3C 规范)的默认值是 "submit"。具体内容点此了解

最后我们修改下 demo:

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
<meta name="renderer" content="webkit"/>
<meta name="keywords" content=""/>
<meta name="description" content=""/>
<title>button按钮的一些问题</title>
</head>
<body>
<form action="result.php" method="post">
<input type="text" name="txt" placeholder="随便输入点什么吧!" autocomplete="off"/>
<button type="button">button按钮type为button</button>
<button type="submit">button按钮type为submit</button>
</form>
</body>
</html>

PS:

写这篇文章的目的在于提醒自己在使用 button 时需要为标签指定相应的 type 类型。