- 浏览: 541782 次
- 性别:
- 来自: 天津
文章分类
- 全部博客 (230)
- java (87)
- c/c++/c# (39)
- ASP.net MVC (4)
- eclipse/visual studio (3)
- tomcat/weblogic/jetty (13)
- linux/unix/windows (20)
- html/javascript/jquery/kendo/bootstrap/layui/vue/react (31)
- hibernate/struts/spring/mybatis/springboot (21)
- lucene/solr/ELK (2)
- shiro (0)
- oracle/sqlserver/mysql/postgresql (23)
- shell/python/ruby (6)
- android (0)
- maven/ant (1)
- freemarker/thymeleaf/velocity (1)
- open source project (41)
- cache/memcached/redis (0)
- nosql/hadoop/hbase/mongodb (0)
- system architecture/dubbo/zookeeper (0)
- software testing (0)
- system optimization (0)
- system security (0)
- tcp/udp/http (2)
- roller/wordpress (2)
- 工具收藏 (8)
- 文摘 (4)
- 生活 (0)
最新评论
-
coconut_zhang:
这个demo 非常完整了,是指下面说的那个html 模版,模版 ...
flying sauser, thymeleaf实现PDF文件下载 -
a93456:
你好,你有完整的demo吗? String template这 ...
flying sauser, thymeleaf实现PDF文件下载 -
yujiaao:
fn 函数循环是没有必要的啊,可以改成
protecte ...
Java 笛卡尔积算法的简单实现 -
安静听歌:
设置了.setUseTemporaryFileDuringWr ...
使用jxl导出大数据量EXCEL时内存溢出的解决办法 -
q280499693:
写的很详细,但是我现在想知道他们是怎么定位log4j.prop ...
关于SLF4J结合Log4j使用时日志输出与指定的log4j.properties不同
input中disabled,readonly解决办法及区别
input的字段当为diabled时时无法获取数值得,所以最近不要用这个,我们可以用readonly带替代,即可解决这类问题。
放在form表单中提交后得不到该值。
将disabled="disabled" 改为 readonly = "readonly" 即可 ,按照W3C的规范:http://www.w3.org/TR/REC-html40/interact/forms.html#h-17.12
设置为disabled的input将会有下面的限制:
1.不能接收焦点
2.使用tab键时将被跳过
3.可能不是successful的
设置为readonly的input将会有下面的限制:
1.可以接收焦点但不能被修改
2.可以使用tab键进行导航
3.可能是successful的
只有successful的表单元素才是有效数据,也即是可以进行提交。disabled和readonly的文本输入框只能通过脚本进行修改value属性。
一、来看看这两个属性在效果和使用上的区别
1 readonly是要锁定这个控件,通过在界面上无法修改他(但是通过javascript可以修改他)。
2 disabled 和readonly有相同的地方也是可以锁定这个控件用户不能改变他的值,但是disabled的更彻底一些,他是要使你完全不能使用他,包括改变他的背景颜色(不信,你去修改一个被disabled掉的input文本框,你发现你是徒劳),如果是checkbox则不能选中他。
3 所有控件都有disabled 属性,但是不一定有readonly属性,如select 下拉框。
(1)text
(2) checkBox
(3)select下拉选择框(这里只能显示disabled和非disabled的区别,因为select 没有readonly属性
(4)button按钮
说明:点击被readonly掉的按钮照样可以触发事件,但是被disabled掉的按钮就无法使用了不管上面有没有事件。
(5)div
说明:将div设置disabled属性之后,整个div都灰掉了,但是文本框里面还是可以输入内容的。
注意:select下拉选择框是没有readonly属性的
二、来看看这两个属性在数据提交方面的区别
先来写一个测试代码:
<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="readonly"></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什么的,然后在浏览器中输入脚本去改变价格的值,然后点提交,那么这个小程序员就可以随便怎么给自己打折都不过份啊。
就想下面的列子显示的,在浏览器中输入脚本改变单价,然后在点返回就可以看到单价已经被改拉。
那么,服务器端设置设置readonly ,disabled和在客户端设置readonly,disabled的有什么不同吗?
我们现在通过在服务器端去设置这两个控件,代码如下:
我们将表单的提交方法设置成get提交,我们就可以在url里面看到提交的内容,发现被设置成disabled的控件没有提交到服务器,readonly的提交数据到服务器了,如下图所示:
这说明和客户端的效果是一样的。
通过以上的测试说明以下几点:
1,客户端设置readonly,disabled和服务器端设置readonly效果一样。
2,readonly的数据是可以提交到服务器的,disabled的数据是不可以提交到服务器的。
3,在.net1.1里面设置成readonly的textbox 在客户端改变之后。服务器是会回传用js改变的值,在.net 2.0里面是不可以回传到客户端,除非你在服务器端设置他的readonly属性(这个时候就和1.1效果一样)。
4,设置成readonly的TextBox在客户端修改数据会提交到服务器,那么作为程序员的你,千万不要update的时候也把这个值修改,如果你是购物网站这么做的话,那么你完蛋了。
5,在服务器端用txtBox.enabled = false;在客户端解析的时候会给TextBox加上diabaled也就是说,数据不能提交到服务器的。
从提交的url可以看出被disabled的控件的值没有提交到服务器,这个时候在服务器端是获取不到这个控件的值的,
相反,被设置成readonly的文本框的值是提交到服务器的。
发表评论
-
Spring Data JPA框架系列(三)-自定义Repository接口详解
2022-05-08 09:03 0前面讲了Spring Boot 整合Spring Boot ... -
flying sauser, thymeleaf实现PDF文件下载
2016-06-17 14:58 5217thymeleaf 的资料比较少,资料大部分都是和spri ... -
thymeleaf与spring整合
2016-06-15 10:08 12341、使用的是Spring EL而不是Ognl。2、访问上下文 ... -
SpringMVC 400 Bad Request 问题
2016-06-15 09:11 1964在提交表单时,发生400错误,并未进入save方法。 ... -
eclipse插件Maven添加依赖查询无结果的解决方法(Select Dependency doesn't work)
2016-04-22 08:33 735在eclipse中用过maven的可能都遇到过这种情况,我 ... -
Freemarker网站静态化的实现(转载)
2012-06-20 13:39 1423做程序也做了将近4年时间了,从来没有发过什么技术性的文章,今 ... -
SpringSecurity 3配置文件
2012-06-10 12:58 1311最近查找了一些Spring security3的资料,感觉网上 ... -
Struts2标签库
2012-05-19 21:19 1545Struts2标签库概述使用标 ... -
struts2的validate错误跳转与chain配合使用的要点
2012-05-18 16:30 1461本文基于struts2.1.8.1 按照struts2的官方文 ... -
OGNL表达式struts2标签“%,#,$”
2012-05-18 15:32 1158一、什么是OGNL,有什么特点? ... -
如何自定义Struts2表单验证后的错误信息显示格式/样式
2011-11-17 10:43 2838环境 Struts 2.1.8.1 + Myeclipse ... -
Struts2验证总结
2011-11-17 10:41 1284在Struts2应用中提供验证的方式有两种——编程式和声明式。 ... -
strtus2.0实现上传
2011-10-31 10:44 1325Struts 2是通过Commons FileUpload文件 ... -
getCurrentSession 与 openSession() 的区别
2011-05-26 11:00 11131 getCurrentSession创建的session会和 ... -
Struts2拦截器执行顺序
2010-11-15 11:25 2734在之前的文章中,我们 ... -
struts2默认拦截器详细说明
2010-11-15 11:23 19871. 理解拦截器 1.1. 什么是拦截器: 拦 ... -
Struts2向JasperReport传参数配置
2010-10-26 10:11 1660Recently I spent a whole day se ... -
struts2与jasperreport整合不能显示图片imgags/px
2010-09-08 13:37 2526终结解决方案:Struts2整 ... -
Spring Write operations are not allowed in read-only mode 错误
2010-09-02 10:19 1216使用Spring提供的Open Session In View ... -
hibernate配置参数
2009-04-03 23:55 1349Hibernate输出SQL语句以便更加深入调试程序----参 ...
相关推荐
在JavaScript中,`readonly`和`disabled`是两个用于HTML表单中控制用户交互的属性。它们虽然都能防止用户修改表单元素的内容,但具体的行为和影响却有所不同。 `readonly`属性主要应用于`<input>`(如`type="text"`...
Disabled 和 Readonly 是两种常见的方法来实现 Input 只读效果,它们均可以使 Input 变为不可编辑状态,但它们之间存在着重要的区别。 Disabled 方法 Disabled 属性用于指定 Input 元素是否可用。当 Input 元素...
在HTML表单设计中,有时候我们需要用户只能查看输入框(input)中的内容而不能修改,这时我们可以使用`disabled`和`readonly`属性来实现只读效果。这两种属性虽然都能达到表面的只读目的,但它们在功能上存在显著...
一个关键的区别是,`disabled`的元素无法获取焦点,而`readonly`的元素可以。如果表单有多个输入项,使用`readonly`时,用户仍然可以通过键盘导航到这些元素,但无法编辑。而在`disabled`状态下,用户无法通过键盘或...
当表单中的input或textarea元素被设置为Readonly时,用户虽然可以看到这些元素的内容,但无法对其进行更改。需要注意的是,尽管用户不能直接修改Readonly属性的元素,但这些元素的值仍然会在表单提交时被发送到...
在网页开发中,`disabled` 和 `readonly` 是两个非常重要的属性,它们都用于限制用户对HTML表单元素的交互,但它们之间存在着显著的区别。接下来我们将深入探讨这两个属性的作用和差异。 首先,`readonly` 属性主要...
在HTML表单中,`readonly` 和 `disabled` 是两个重要的属性,它们都可以用来限制用户对表单元素的交互,但它们之间的区别在于作用范围、提交表单时的行为以及用户体验等方面。 首先,`readonly` 属性主要用于`...
`readonly` 属性用于文本输入框 (`input[type="text"]`),它使得用户不能修改输入框中的内容,但用户仍然可以选中并复制文本。在 jQuery 中设置 `readonly` 属性,你可以使用 `attr()` 方法: ```javascript $(...
在网页表单设计中,`readonly` 和 `disabled` 是两个非常常见的属性,它们都用于限制用户对输入字段的编辑,但它们之间存在着显著的区别。理解这些差异对于创建功能完整且用户体验良好的表单至关重要。 首先,`...
form表单输入框input设置disable属性提交后,得不到该输入框的值,解决该类问题可以参考下面两个方法: 方法一: 使用readonly带替代disabled,即把 disabled="disabled" 修改为 readonly="readonly" 二者区别: ...
解决标题中提到的问题,可以将`disabled`属性替换为`readonly`。例如: ```html <input name="country" id="country" size=12 value="disabled提交时得不到该值" readonly="readonly"> ``` 这样,虽然用户不能修改...
和 readonly 属性类似,可以在 input 标签中添加 disabled 属性,以便让 input 变成不可编辑状态。例如:<input type="text" disabled="disabled" /> 3. 使用 JavaScript 代码 可以使用 JavaScript 代码来让 input...
在HTML表单中,`readonly`和`disabled`属性都是用来限制用户输入的,但它们在功能和表现上有着明显的差异。理解这两个属性的区别对于创建交互式网页表单至关重要。 首先,`readonly`属性主要用于文本框(`<input ...
1)适应范围: readonly:input[type="text"],input[type="password"],input[type="teaxtarea"] disabled:所有的表单元素,如select, radio, checkbox, button等 2)操作: readonly:不允许用户修改操作,不影响...
PS:下面看下elementui通过 disabled 属性指定是否禁用 input 组件,如何用DOM操作取消disabled 属性 <!DOCTYPE html> <html lang=en> <head> <meta charset=UTF-8> <meta name=...