濮阳杆衣贸易有限公司

主頁 > 知識庫 > 表單中Readonly和Disabled的區(qū)別詳解

表單中Readonly和Disabled的區(qū)別詳解

熱門標(biāo)簽:上海400電話辦理到易號網(wǎng) 成都企業(yè)外呼系統(tǒng) 常州電話外呼系統(tǒng)招商 智能語音電銷機器人客戶端 廣州防封電銷機器人廠家 申請400電話移動 洛陽防封卡外呼系統(tǒng)廠家 山東電銷機器人軟件 南通電銷外呼系統(tǒng)軟件

Readonly和Disabled是用在表單中的兩個屬性,它們都能夠做到使用戶不能夠更改表單域中的內(nèi)容。但是它們之間有著微小的差別,總結(jié)如下:

Readonly只針對input(text / password)和textarea有效,而disabled對于所有的表單元素都有效,包括select, radio, checkbox, button等。

但是表單元素在使用了disabled后,當(dāng)我們將表單以POST或GET的方式提交的話,這個元素的值不會被傳遞出去,而readonly會將該值傳遞出去(這種情況出現(xiàn)在我們將某個表單中的textarea元素設(shè)置為disabled或readonly,但是submit button卻是可以使用的)。

一般比較常用的情況是:

在某個表單中為用戶預(yù)填了某個唯一識別代碼,不允許用戶改動,但是在提交時需要傳遞該值,此時應(yīng)該將它的屬性設(shè)置為readonly。

經(jīng)常遇到當(dāng)用戶正式提交了表單后需要等待管理員的信息驗證,這就不允許用戶再更改表單中的數(shù)據(jù),而是只能夠查看,由于disabled的作用元素范圍大,所以此時應(yīng)該使用disabled,但同時應(yīng)該注意的是要將submit button也disabled掉,否則只要用戶按了這個按鈕,如果在數(shù)據(jù)庫操作頁面中沒有做完整性檢測的話,數(shù)據(jù)庫中的值就會被清除。

如果說在這種情況下用readonly來代替disabled的話,若表單中只有input(text/password)和textarea元素,那還是可以的,如果存在其他發(fā)元素,比如select,用戶可以在重新改寫值后按回車鍵進(jìn)行提交(回車是默認(rèn)的submit觸發(fā)按鍵)。

我們常常在用戶按了提交按鈕后,利用javascript將提交按鈕disabled掉,這樣可以防止網(wǎng)絡(luò)條件比較差的環(huán)境下,用戶反復(fù)點提交按鈕導(dǎo)致數(shù)據(jù)冗余地存入數(shù)據(jù)庫。

disabled和readonly這兩個屬性有一些共同之處,比如都設(shè)為true,則form屬性將不能被編輯,往往在寫js代碼的時候容易混合使用這兩個屬性,其實他們之間是有一定區(qū)別的。

如果一個輸入項的disabled設(shè)為true,則該表單輸入項不能獲取焦點,用戶的所有操作(鼠標(biāo)點擊和鍵盤輸入等)對該輸入項都無效,最重要的一點是當(dāng)提交表單時,這個表單輸入項將不會被提交。

而readonly只是針對文本輸入框這類可以輸入文本的輸入項,如果設(shè)為true,用戶只是不能編輯對應(yīng)的文本,但是仍然可以聚焦焦點,并且在提交表單的時候,該輸入項會作為form的一項提交。

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

復(fù)制代碼 代碼如下:

!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的字段當(dāng)為diabled時時無法獲取數(shù)值得,所以最近不要用這個,我們可以用readonly帶替代,即可解決這類問題。

復(fù)制代碼 代碼如下:

input name="nowamagic" id="nowamagic" size="12" value="disabled" disabled="disabled">

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

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

設(shè)置為disabled的input將會有下面的限制:

不能接收焦點

使用tab鍵時將被跳過

可能不是successful的

設(shè)置為readonly的input將會有下面的限制:

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

可以使用tab鍵進(jìn)行導(dǎo)航

可能是successful的

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

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

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

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

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

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

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

我們將表單的提交方法設(shè)置成get提交,我們就可以在url里面看到提交的內(nèi)容,發(fā)現(xiàn)被設(shè)置成disabled的控件沒有提交到服務(wù)器,readonly的提交數(shù)據(jù)到服務(wù)器了。

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

復(fù)制代碼 代碼如下:

!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>無標(biāo)題文檔/title>
/head>
body> 
form enctype="multipart/form-data" action="sign.php" method="post" name="moblie_act_form" id="moblie_act_form" >  
input type="text"  class="input" 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>

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

您可能感興趣的文章:
  • readonly和disabled的區(qū)別
  • HTML中Select不用Disabled實現(xiàn)ReadOnly的效果
  • javascript中input中readonly和disabled區(qū)別介紹
  • jquery設(shè)置元素的readonly和disabled的寫法
  • jquery批量設(shè)置屬性readonly和disabled的方法
  • readonly和disabled屬性的區(qū)別

標(biāo)簽:滄州 萊蕪 貴州 鶴壁 邵陽 混顯 廣安 賀州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《表單中Readonly和Disabled的區(qū)別詳解》,本文關(guān)鍵詞  表單,中,Readonly,和,Disabled,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《表單中Readonly和Disabled的區(qū)別詳解》相關(guān)的同類信息!
  • 本頁收集關(guān)于表單中Readonly和Disabled的區(qū)別詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    休宁县| 凤台县| 阿城市| 台山市| 吴旗县| 米易县| 泽普县| 灵台县| 葵青区| 襄城县| 天津市| 都兰县| 武川县| 昭觉县| 滦南县| 兴山县| 凤翔县| 涿鹿县| 乌审旗| 巢湖市| 濮阳市| 方城县| 西畴县| 林周县| 永寿县| 财经| 庆元县| 浮山县| 哈密市| 云安县| 如皋市| 阿瓦提县| 子洲县| 合山市| 新巴尔虎右旗| 兰溪市| 澄城县| 奈曼旗| 宁远县| 内江市| 绥德县|