HTML中disabled和readonly的区别

Readonly与Disabled的区别
本文详细解释了HTML表单中Readonly与Disabled属性的区别。Readonly仅适用于文本输入框,禁用编辑但仍允许聚焦并参与表单提交;而Disabled则广泛应用于所有表单元素,不仅禁止编辑还阻止元素参与提交过程。
Readonly和Disabled是用在表单中的两个属性,它们都能够做到使用户不能够更改表单域中的内容。但是它们之间有着微小的差别,总结如下:
Readonly只针对input(text / password)和textarea有效,而disabled对于所有的表单元素都有效,包括select, radio, checkbox, button等。但是表单元素在使用了disabled后,当我们将表单以POST或GET的方式提交的话,这个元素的值不会被传递出去,而readonly会将该值传递出去(这种情况出现在我们将某个表单中的textarea元素设置为disabled或readonly,但是submit button却是可以使用的)。

一般比较常用的情况是:

①在某个表单中为用户预填了某个唯一识别代码,不允许用户改动,但是在提交时需要传递该值,此时应该将它的属性设置为readonly

②经常遇到当用户正式提交了表单后需要等待管理员的信息验证,这就不允许用户再更改表单中的数据,而是只能够查看,由于disabled的作用元素范围大,所以此时应该使用disabled,但同时应该注意的是要将submit button也disabled掉,否则只要用户按了这个按钮,如果在数据库操作页面中没有做完整性检测的话,数据库中的值就会被清除。如果说在这种情况下用readonly来代替disabled的话,若表单中只有input(text / password)和textarea元素,那还是可以的,如果存在其他发元素,比如select,用户可以在重新改写值后按回车键进行提交(回车是默认的submit触发按键)

③我们常常在用户按了提交按钮后,利用javascript将提交按钮disabled掉,这样可以防止网络条件比较差的环境下,用户反复点提交按钮导致数据冗余地存入数据库。


disabled和readonly这两个属性有一些共同之处,比如都设为true,则form属性将不能被编辑,往往在写js代码的时候容易混合使用这两个属性,其实他们之间是有一定区别的。

如果一个输入项的disabled设为true,则该表单输入项不能获取焦点,用户的所有操作(鼠标点击和键盘输入等)对该输入项都无效,最重要的一点是当提交表单时,这个表单输入项将不会被提交。

而readonly只是针对文本输入框这类可以输入文本的输入项,如果设为true,用户只是不能编辑对应的文本,但是仍然可以聚焦焦点,并且在提交表单的时候,该输入项会作为form的一项提交。


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<form id="form1" name="form1" method="get" action="">
<input name="q1" type="text" id="q1" value="readonly" readonly="true" />
<input name="q2" type="text" disabled="disabled" id="q2" value="disabled" />
<input type="submit" name="Submit" value="Submit" />
</form>
</body>
</html>

小技巧:
diabled:可用readonly代替,background-color:#cccccc;加上灰色背景色就可以
### HTML input 元素的其他属性 除了 `readonly` `disabled` 之外,HTML 的 `<input>` 元素还提供了许多其他属性,用于控制输入框的行为外观。以下是一些常用的属性及其用途: #### `type` `type` 属性定义了输入框的类型,常见的值包括 `text`、`number`、`password`、`email`、`date` 等。不同类型的输入框适用于不同的数据输入场景。 ```html <input type="text" name="username" placeholder="请输入用户名"> <input type="password" name="password" placeholder="请输入密码"> ``` #### `value` `value` 属性用于设置输入框的默认值。当用户未输入内容时,该属性定义的内容将显示在输入框中。 ```html <input type="text" name="username" value="defaultUser"> ``` #### `placeholder` `placeholder` 属性提供了一个提示信息,当输入框为空时,会显示该提示内容。它通常用于指导用户输入正确的数据。 ```html <input type="text" name="username" placeholder="请输入用户名"> ``` #### `required` `required` 属性用于指定输入框不能为空。在表单提交时,如果输入框为空,浏览器会提示用户输入内容。 ```html <input type="text" name="username" required> ``` #### `min` `max` `min` `max` 属性用于限制输入框的最小值最大值。它们通常与 `type="number"` 或 `type="date"` 一起使用。 ```html <input type="number" name="age" min="18" max="99"> ``` #### `step` `step` 属性定义了输入框的步长值,通常与 `type="number"` 一起使用。它控制输入框中数值的递增或递减步长。 ```html <input type="number" name="quantity" min="0" max="10" step="2"> ``` #### `pattern` `pattern` 属性用于指定输入框内容的正则表达式规则。在表单提交时,输入内容必须符合该规则,否则会提示错误。 ```html <input type="text" name="username" pattern="[A-Za-z]{3,10}" title="用户名必须为3-10个字母"> ``` #### `autocomplete` `autocomplete` 属性用于控制输入框是否启用自动填充功能。常见的值包括 `on` `off`。 ```html <input type="text" name="username" autocomplete="on"> ``` #### `autofocus` `autofocus` 属性用于指定页面加载时,输入框是否自动获得焦点。 ```html <input type="text" name="username" autofocus> ``` #### `maxlength` `maxlength` 属性用于限制输入框中允许输入的最大字符数。 ```html <input type="text" name="username" maxlength="10"> ``` #### `size` `size` 属性用于定义输入框的可见宽度(以字符数为单位)。 ```html <input type="text" name="username" size="30"> ``` #### `list` `list` 属性用于关联 `<input>` 元素 `<datalist>` 元素,提供一个下拉列表供用户选择。 ```html <input type="text" name="browser" list="browsers"> <datalist id="browsers"> <option value="Chrome"> <option value="Firefox"> <option value="Safari"> </datalist> ``` #### `multiple` `multiple` 属性允许用户在单个输入框中输入多个值,通常与 `type="email"` 或 `type="file"` 一起使用。 ```html <input type="email" name="emails" multiple> ``` #### `name` `id` `name` `id` 属性用于标识输入框,在表单提交或 JavaScript 操作中非常有用。 ```html <input type="text" name="username" id="username"> ``` #### `class` `style` `class` `style` 属性用于为输入框应用 CSS 样式。 ```html <input type="text" name="username" class="form-control" style="width: 200px;"> ``` ### 总结 HTML 的 `<input>` 元素提供了丰富的属性,用于控制输入框的行为、外观交互。通过合理使用这些属性,可以满足各种表单输入需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值