电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

表單中Readonly和Disabled的區別詳解

瀏覽:169日期:2022-06-02 11:35:04

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的一項提交。

小技巧:diabled可用readonly代替,background-color:#cccccc;加上灰色背景色就可以。

復制代碼 代碼如下:
<!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>

input的字段當為diabled時時無法獲取數值得,所以最近不要用這個,我們可以用readonly帶替代,即可解決這類問題。

復制代碼 代碼如下:
<input name="nowamagic" id="nowamagic" size="12" value="disabled" disabled="disabled">

放在form表單中提交后得不到該值。

將disabled="disabled" 改為 readonly = "readonly" 即可 ,按照W3C的規范:http://www.w3.org/TR/REC-html40/interact/forms.html#h-17.12

設置為disabled的input將會有下面的限制:

不能接收焦點

使用tab鍵時將被跳過

可能不是successful的

設置為readonly的input將會有下面的限制:

可以接收焦點但不能被修改

可以使用tab鍵進行導航

可能是successful的

只有successful的表單元素才是有效數據,也即是可以進行提交。disabled和readonly的文本輸入框只能通過腳本進行修改value屬性。

這兩個屬性在效果和使用上的區別:

readonly是要鎖定這個控件,通過在界面上無法修改他(但是通過javascript可以修改他)。

disabled和readonly有相同的地方也是可以鎖定這個控件用戶不能改變他的值,但是disabled的更徹底一些,他是要使你完全不能使用他,包括改變他的背景顏色(不信,你去修改一個被disabled掉的input文本框,你發現你是徒勞),如果是checkbox則不能選中他。

所有控件都有disabled 屬性,但是不一定有readonly屬性,如select 下拉框。點擊被readonly掉的按鈕照樣可以觸發事件,但是被disabled掉的按鈕就無法使用了不管上面有沒有事件。

將div設置disabled屬性之后,整個div都灰掉了,但是文本框里面還是可以輸入內容的。注意:select下拉選擇框是沒有readonly屬性的

大家仔細想一下會有一個問題出現,就是有時候我們寫程序的時候,比如一個購買商品的頁面,我們可以在上面輸入商品的數量,但是價格我們設置成只讀的,最后下面有一個總價格就是 數量 * 只讀的價格,那么我們很可能就是這樣做的,在后臺的時候讀取 商品數量的 textbox值,然后讀取 價格的textbox的值,然后兩者的積 作為總金額 uodate到數據庫中去了,如果客戶端的用戶和我們一樣是一個會點程序的小程序員,那么麻煩就有可能來拉,他可以查看源文件,查看到被readonly的價格的文本框的id或者是name什么的,然后在瀏覽器中輸入腳本去改變價格的值,然后點提交,那么這個小程序員就可以隨便怎么給自己打折都不過份啊。

我們將表單的提交方法設置成get提交,我們就可以在url里面看到提交的內容,發現被設置成disabled的控件沒有提交到服務器,readonly的提交數據到服務器了。

關于用js控制disabled和readonly的問題,下面是一段參考代碼:

復制代碼 代碼如下:
<!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>無標題文檔</title>
</head>
<body> 
<form enctype="multipart/form-data" action="sign.php" method="post" name="moblie_act_form" id="moblie_act_form" >  
<input type="text"  id="mobile" name="mobile" value="{$mobile}"  readonly="true" disabled="disabled">  
<input type="button" value="修改" onClick="modify_phone()">     
</form>  
</html>  
<script language="javascript">  
function modify_phone(){  
  if(confirm("您確定要修改您的手機號碼嗎?")){  
      document.moblie_act_form.mobile.readOnly = false;  
      document.moblie_act_form.mobile.disabled = false;                  
  }  
  return true;  
}  
</script>
</body>
</html>

以上就是本文的全部內容了,希望大家能夠喜歡。

標簽: CSS HTML
相關文章:
主站蜘蛛池模板: 线粒体膜电位荧光探针-细胞膜-标记二抗-上海复申生物科技有限公司 | 洁净棚-洁净工作棚-无菌室-净化工程公司_北京卫护科技有限公司 | 卓能JOINTLEAN端子连接器厂家-专业提供PCB接线端子|轨道式端子|重载连接器|欧式连接器等电气连接产品和服务 | 工业雾炮机_超细雾炮_远程抑尘射雾器-世纪润德环保设备 | Eiafans.com_环评爱好者 环评网|环评论坛|环评报告公示网|竣工环保验收公示网|环保验收报告公示网|环保自主验收公示|环评公示网|环保公示网|注册环评工程师|环境影响评价|环评师|规划环评|环评报告|环评考试网|环评论坛 - Powered by Discuz! | 润东方环保空调,冷风机,厂房车间降温设备-20年深圳环保空调生产厂家 | 楼承板-钢筋楼承板-闭口楼承板-无锡优贝斯楼承板厂 | 济南玻璃安装_济南玻璃门_济南感应门_济南玻璃隔断_济南玻璃门维修_济南镜片安装_济南肯德基门_济南高隔间-济南凯轩鹏宇玻璃有限公司 | 万家财经_财经新闻_在线财经资讯网 | 砂石生产线_石料生产线设备_制砂生产线设备价格_生产厂家-河南中誉鼎力智能装备有限公司 | 金现代信息产业股份有限公司--数字化解决方案供应商 | 合肥汽车充电桩_安徽充电桩_电动交流充电桩厂家_安徽科帝新能源科技有限公司 | 炉门刀边腹板,焦化设备配件,焦化焦炉设备_沧州瑞创机械制造有限公司 | 恒温槽_恒温水槽_恒温水浴槽-上海方瑞仪器有限公司 | 鹤壁创新仪器公司-全自动量热仪,定硫仪,煤炭测硫仪,灰熔点测定仪,快速自动测氢仪,工业分析仪,煤质化验仪器 | 模切之家-专注服务模切行业的B2B平台!| 厂房出租_厂房出售_产业园区招商_工业地产&nbsp;-&nbsp;中工招商网 | 鲸鱼视觉 -数字展厅多媒体互动展示制作公司 | 网站建设-网站制作-网站设计-网站开发定制公司-网站SEO优化推广-咏熠软件 | 土壤检测仪器_行星式球磨仪_土壤团粒分析仪厂家_山东莱恩德智能科技有限公司 | 熔体泵|换网器|熔体齿轮泵|熔体计量泵厂家-郑州巴特熔体泵有限公司 | 杭州用友|用友软件|用友财务软件|用友ERP系统--杭州协友软件官网 | 亳州网络公司 - 亳州网站制作 - 亳州网站建设 - 亳州易天科技 | 行业分析:提及郑州火车站附近真有 特殊按摩 ?2025实地踩坑指南 新手如何避坑不踩雷 | 压接机|高精度压接机|手动压接机|昆明可耐特科技有限公司[官网] 胶泥瓷砖胶,轻质粉刷石膏,嵌缝石膏厂家,腻子粉批发,永康家德兴,永康市家德兴建材厂 | 二手电脑回收_二手打印机回收_二手复印机回_硒鼓墨盒回收-广州益美二手电脑回收公司 | 珠海冷却塔降噪维修_冷却塔改造报价_凉水塔风机维修厂家- 广东康明节能空调有限公司 | 贴板式电磁阀-不锈钢-气动上展式放料阀-上海弗雷西阀门有限公司 工业机械三维动画制作 环保设备原理三维演示动画 自动化装配产线三维动画制作公司-南京燃动数字 | 铸铝门厂家,别墅大门庭院大门,别墅铸铝门铜门[十大品牌厂家]军强门业 | 首页|光催化反应器_平行反应仪_光化学反应仪-北京普林塞斯科技有限公司 | 四合院设计_四合院装修_四合院会所设计-四合院古建设计与建造中心1 | 油缸定制-液压油缸厂家-无锡大鸿液压气动成套有限公司 | 胶原检测试剂盒,弹性蛋白检测试剂盒,类克ELISA试剂盒,阿达木单抗ELISA试剂盒-北京群晓科苑生物技术有限公司 | 活性炭-蜂窝-椰壳-柱状-粉状活性炭-河南唐达净水材料有限公司 | CNC机加工-数控加工-精密零件加工-ISO认证厂家-鑫创盟 | 胶泥瓷砖胶,轻质粉刷石膏,嵌缝石膏厂家,腻子粉批发,永康家德兴,永康市家德兴建材厂 | 压力喷雾干燥机,喷雾干燥设备,柱塞隔膜泵-无锡市闻华干燥设备有限公司 | 美侍宠物-专注宠物狗及宠物猫训练|喂养|医疗|繁育|品种|价格 | 风电变桨伺服驱动器-风电偏航变桨系统-深圳众城卓越科技有限公司 | 柔性测斜仪_滑动测斜仪-广州杰芯科技有限公司 | 旗杆生产厂家_不锈钢锥形旗杆价格_铝合金电动旗杆-上海锥升金属科技有限公司 |