A. html中輸入框為只讀狀態如何設置
在設計網頁時,有時需要將輸入框設置為只讀狀態,即其中的內容不可編輯,實現這種設計的方法有兩種:
使用input的disable和readonly兩個屬性。
先來看下二者的區別:
<input type= "text " readonly= "true " value= "這是readonly的! ">
<input type= "text " disabled= "true " value= "這是disabled的! ">
可以看到,雖然兩種都是讓input的內容不能被用戶編輯,但是對於後期的美工處理就有問題了!
例如:
<style>
input
{
color:blue;
}
</style>
只有readonly的那個文本是藍色的!
disabled是按系統設置的disabled顏色來設置前景色的,css對其無效!
另外,readonly和disabled還有一個不同點就是,當input屬性為readonly時,提交表單是可以獲得input的內容。
如果是disabled則不能獲得所提交的內容,返回值全部為null,所以此處需要注意。
慎用readonly和disabled,指定了disabled的表單,在submit時,不會把它的值傳出去。
例如,有兩個text,一個是readonly一個是disabled,submit後,只能發送那個不是disabled的。
注意地址欄的值. 要保存到本地,因為submit了,不然,看不到效果。
B. 設置HTML表單文本框為只讀的幾種方式
加上disabled屬性
<input type="text" disabled>
使用js設置
<input type="text" id="text">
<script>
document.getElementById("text").setAttribute("disabled",true);
</script>
C. 表單中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的一項提交。
小技巧:diabled可用readonly代替,background-color:#cccccc;加上灰色背景色就可以。
01 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "htt p://w ww. w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
02 <html xmlns="htt p:/ /ww w.w3.org/1999/xhtml">
03 <head>
04 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
05 <title>Untitled Document</title>
06 </head>
07
08 <body>
09 <form id="form1" name="form1" method="get" action="">
10 <input name="q1" type="text" id="q1" value="readonly" readonly="true" />
11 <input name="q2" type="text" disabled="disabled" id="q2" value="disabled" />
12 <input type="submit" name="Submit" value="Submit" />
13 </form>
14 </body>
15 </html>
input的欄位當為diabled時時無法獲取數值得,所以最近不要用這個,我們可以用readonly帶替代,即可解決這類問題。
1 <input name="nowamagic" id="nowamagic" size="12" value="disabled" disabled="disabled">
放在form表單中提交後得不到該值。
將disabled="disabled" 改為 readonly = "readonly" 即可 ,按照W3C的規范:htt p:/ /ww w.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的問題,下面是一段參考代碼:
view sourceprint?
01 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""htt p:/ /ww w.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
02 <html xmlns="htt p:/ /ww w.w3.org/1999/xhtml">
03 <head>
04 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
05 <title>無標題文檔</title>
06 </head>
07
08 <body>
09 <form enctype="multipart/form-data" action="sign.php" method="post" name="moblie_act_form"id="moblie_act_form" >
10 <input type="text" class="input" id="mobile" name="mobile" value="{$mobile}" readonly="true"disabled="disabled">
11 <input type="button" value="修改" onClick="modify_phone()">
12 </form>
13 </html>
14 <script language="javascript">
15 function modify_phone(){
16 if(confirm("您確定要修改您的手機號碼嗎?")){
17 document.moblie_act_form.mobile.readOnly = false;
18 document.moblie_act_form.mobile.disabled = false;
19 }
20 return true;
21 }
22 </script>
23 </body>
24 </html>
D. 關於select 表單域的只讀屬性問題
禁用select的屬性是disabled,text文本框才是readOnly。
<select size=1 name=slt disabled>
<option>1</option>
<option>2</option>
</select>
<input type="button" value="更改" onclick="clearReadOnly()">
<script type="text/javascript">
function clearReadOnly(){
document.all.slt.disabled=false;
}
</script>
E. 在html里Input有2個屬性disabled="disabled"和readonly="readonly"有什麼區別
disabled 屬性的作用是禁用
readonly 屬性為只讀,但沒有禁用
通過表單提交,擁有disabled屬性的表單元素處理頁面是獲取不到其值的,而readonly則可以。
F. html中input只讀屬性readonly 和 disable的區別
作用范圍不同
disabled屬性可以用語所有的表單元素;readonly屬性只對input(輸入框)、textarea有效;
對元素的影響程度不同
disabled屬性阻止對元素的一切操作,例如獲取焦點,點擊事件等等;readonly屬性只是將元素設置為只讀,其他操作正常;
表單提交
disabled屬性可以讓表單元素的值無法被提交;readonly屬性則不影響提交問題;
G. 如何設置表單元素的只讀和禁用屬性
可以直接利用【表單大師】製作表單,將欄位屬性前面的{不可編輯}打勾,這樣填表者就只能看到該欄位,無法編輯了
至於你提問中的禁用是指的禁用什麼呢?