`
yyys8517750
  • 浏览: 143027 次
  • 性别: Icon_minigender_1
  • 来自: 岳阳
社区版块
存档分类
最新评论

html元素的disabled,readonly 的详细分析

 
阅读更多
一 先看看这两个属性在效果和使用上的区别

 

1 readonly是要锁定这个控件,通过在界面上无法修改他(但是通过javascript可以修改他)。

2 disabled readonly有相同的地方也是可以锁定这个控件用户不能改变他的值,但是disabled的更彻底一些,他是要使你完全不能使用他,包括改变他的背景颜色(不信,你去修改一个被disabled掉的input文本框,你发现你是徒劳),如果是checkbox则不能选中他。

 

3 所有控件都有disabled 属性,但是不一定有readonly属性。如select 下拉框

 

 

2) checkBox

 

3) select下拉选择框(这里只能显示disabled和非disabled的区别,因为select 没有readonly属性)

 

 

4button按钮

 

说明:点击被readonly掉的按钮照样可以触发事件,但是被disabled掉的按钮就无法使用了不管上面有没有事件。

 

5) div

 

说明:将div设置disabled属性之后,整个div都灰掉了,但是文本框里面还是可以输入内容的。

注意:select下拉选择框是没有readonly属性的,为什么呢?(思考)。

 

 

二再来看看这两个属性在数据提交方面的区别

我们先来写一个测试代码:

Code
<form id="form1" runat="server">
<div>
<asp:TextBox ID="txt_Disabled" runat="server" Text="disabled"   disabled="disabled" ></asp:TextBox><br />
<asp:TextBox ID="txt_ReadOnly" runat="server" Text="ReadOnly"   ReadOnly="true"></asp:TextBox><br />
<asp:TextBox ID="txt_Normal" runat="server" Text="normal" ></asp:TextBox><br />
<asp:Button ID="btn_Test" runat="server"   Text="提交数据" onclick="btn_Test_Click" />
<input type="button" name="btn_ChangeValue" value="改变readonly的值" onclick="document.all('txt_ReadOnly').value = 'myzzb'" />
</div>

</form>

在这里,我写了一个asp表单页面,使用了get 方式提交

从提交的url可以看出被disabled的控件的值没有提交到服务器,这个时候在服务器端是获取不到这个控件的值的,

相反,被设置成readonly的文本框的值是提交到服务器的。

 

 

这里出现了一个奇怪的情况,readonly的文本框是被设置成readonly的了,但是我通过下面的按钮 "改变readonly"

document.all('txt_ReadOnly').value = 'myzzb' 这个时候 readonly的值显示的是myzzb了,现在我点提交数据,在服务器端获取到了值是myzzb了,但是奇怪的是,回传到页面之后,页面的readonly控件里面还是显示的是改变myzzb之前的 Readonly的值了,这究竟是什么原因呢?

这是微软在.net2.0里面做的小改动。如果Textbox的ReadOnly属性设置成"True",ViewState将不会被回发到服务器,虽然客户端已经更改了。但是我们依然还是可以用TextBox.Attributes.Add("readonly","readonly") 来实现。

在服务器端去设置一个控件的readonly 和在客户端设置一个文本框的readonly属性是有区别的。在服务器端我们用TextBox.Attributes.Add("readonly","readonly") 页面在回传的时候,即使文本框是readonly 的,也是会改变他的值的,在客户端在2.0里面就会不会显示客户端的修改。

ps:在.net 1.1 里面 不会出现上面值还保存之前的值的情况。

 

大家仔细想一下会有一个问题出现,就是有时候我们写程序的时候,比如一个购买商品的页面,我们可以在上面输入商品的数量,但是价格我们设置成只读的,最后下面有一个总价格就是 数量 * 只读的价格,那么我们很可能就是这样做的,在后台的时候读取 商品数量的 textbox值,然后读取 价格的textbox的值,然后两者的积 作为总金额 uodate到数据库中去了,如果客户端的用户和我们一样是一个会点程序的小程序员,那么麻烦就有可能来拉,他可以查看源文件,查看到被readonly的价格的文本框的id或者是name什么的,然后在浏览器中输入脚本去改变价格的值,然后点提交,那么这个小程序员就可以随便怎么给自己打折都不过份啊。

就想下面的列子显示的,在浏览器中输入脚本改变单价,然后在点返回就可以看到单价已经被改拉。

 

分享到:
评论

相关推荐

    怎样通过disabled和readonly将input设置为只读效果.docx

    Disabled 和 Readonly 都可以使 Input 元素变为不可编辑状态,但它们之间存在着重要的区别。Disabled 属性会使 Input 元素的值无法被传递给服务器端程序,而 Readonly 属性则不会影响其值的传递。 因此,在实际开发...

    jquery设置元素的readonly和disabled的写法

    总之,通过 jQuery 的 `attr()` 和 `removeAttr()` 函数,我们可以方便地控制 HTML 元素的 `readonly` 和 `disabled` 属性,实现动态交互效果,提高用户体验。在编写前端代码时,灵活运用这些方法能够帮助我们更好地...

    HTML中Select不用Disabled实现ReadOnly的效果

    而题目中提到的需求是“HTML中Select不用`Disabled`实现`ReadOnly`的效果”,即保持下拉列表可查看,但阻止用户交互。 要实现这种效果,我们可以利用事件处理程序来模拟只读状态,而不直接使用`disabled`属性。以下...

    Readonly和Disabled的区别

    Readonly和Disabled是HTML表单中的两个重要的属性,它们都可以限制用户对表单元素的交互操作。尽管它们有共同的功能,即防止表单数据被修改,但它们之间存在着本质的区别。 首先,Readonly属性主要应用于input元素...

    表单元素属性readonly和disabled使用对比

    在HTML中,`readonly`和`disabled`是两个非常重要的表单元素属性,它们用于限制用户对表单输入的交互方式。这两个属性虽然在目的上相似,但它们的应用场景、操作行为以及在表单提交时的行为却有着明显的区别。 首先...

    disabled与readonly的作用及区别介绍

    在网页开发中,`disabled` 和 `readonly` 是两个非常重要的属性,它们都用于限制用户对HTML表单元素的交互,但它们之间存在着显著的区别。接下来我们将深入探讨这两个属性的作用和差异。 首先,`readonly` 属性主要...

    html表单属性readonly和disabled的使用方法

    - 使用方法:只需在HTML元素上添加`readonly`属性即可,例如对于`&lt;input&gt;`标签,可以写为`&lt;input type="text" readonly&gt;`。 2. **失效属性(disabled)** - `disabled` 属性则更加严格,它不仅使元素变为不可编辑...

    readonly和disabled的区别

    在网页表单设计中,`readonly` 和 `disabled` 是两个非常常见的属性,它们都用于限制用户对输入字段的编辑,但它们之间存在着显著的区别。理解这些差异对于创建功能完整且用户体验良好的表单至关重要。 首先,`...

    通过disabled和readonly将input设置为只读效果

    在HTML表单设计中,有时候我们需要用户只能查看输入框(input)中的内容而不能修改,这时我们可以使用`disabled`和`readonly`属性来实现只读效果。这两种属性虽然都能达到表面的只读目的,但它们在功能上存在显著...

    表单中Readonly和Disabled的区别详解

    在HTML表单中,`readonly` 和 `disabled` 是两个重要的属性,它们都可以用来限制用户对表单元素的交互,但它们之间的区别在于作用范围、提交表单时的行为以及用户体验等方面。 首先,`readonly` 属性主要用于`...

    javascript中input中readonly和disabled区别介绍

    总结来说,`readonly`和`disabled`都是为了限制用户对表单元素的修改,但`readonly`只影响编辑,不影响提交,而`disabled`则全面禁止交互且不包含在提交数据内。开发者应根据具体需求来选择使用哪一个属性,以实现...

    textarea的disabled与readonly属性具体用法介绍

    为了控制用户的交互行为,HTML提供了`disabled`和`readonly`两个属性,它们可以分别将文本区域设置为禁用状态和只读状态。下面我们将详细探讨这两个属性的用法及其差异。 ### 1. `disabled`属性 `disabled`属性...

    readonly和disabled属性的区别

    在HTML表单中,`readonly`和`disabled`属性都是用来限制用户输入的,但它们在功能和表现上有着明显的差异。理解这两个属性的区别对于创建交互式网页表单至关重要。 首先,`readonly`属性主要用于文本框(`...

    浅谈html中input只读属性readonly和disable的区别

    HTML中的`readonly`和`disabled`属性都是用来限制用户对表单元素的交互,但它们在实际应用中具有不同的效果和使用场景。 首先,`readonly`属性主要用于`&lt;input&gt;`(如`text`、`password`)和`&lt;textarea&gt;`元素。它...

    jquery批量设置属性readonly和disabled的方法

    本文将详细介绍如何使用jQuery库来批量设置input元素的readonly和disabled属性。 ### 使用jQuery批量设置readonly属性 在HTML中,readonly属性是input元素的一个布尔属性,当这个属性存在时,输入框将变为只读,...

    设置disabled属性后台读不到数据如何让select支持readonly

    在HTML表单中,`disabled`属性用于禁用表单元素,使得用户无法与之交互。然而,一个常见的问题是,当`disabled`属性被设置在`&lt;select&gt;`元素上时,后台程序在提交表单时可能无法获取到选中的选项值。这是因为`...

    Html5新增元素详解.pptx

    2. 拥有 bool 值的属性:Html5 中的一些属性拥有 bool 值,例如 disabled 和 readonly 等,通过省略属性的值来表达值为“true”。 3. 省略属性的引用符:Html5 中可以省略属性的引用符,例如。 Html5 中的新增结构...

    html form表单input使用disabled后提交不能获取表单值的解决方法

    使用readonly带替代disabled,即把 disabled="disabled" 修改为 readonly="readonly" 二者区别: disabled不能接收焦点,使用tab键时将被跳过,可能不是successful的; readonly可以接收焦点但不能被修改,可以使用...

Global site tag (gtag.js) - Google Analytics