1. 程式人生 > >ReadOnly和Disabled的區別

ReadOnly和Disabled的區別

ReadOnly和Disabled的作用是使使用者不能夠更改表單域中的內容.
但是二者還是有著一些區別的:

1、Readonly只針對input(text/password)和textarea有效,而disabled對於所有的表單元素有效,包括select,radio,checkbox,button等。
2、在表單元素使用了disabled後,我們將表單以POST或者GET的方式提交的話,這個元素的值不會被傳遞出去,而readonly會將該值傳遞出去
3.由於div沒有disabled屬性,因此不能簡單的通過設定disabled屬性達到效果。
常用情況:
1、在某個表單中為使用者預填了某個唯一識別程式碼,不允許使用者改動,但是在提交時需要傳遞該值,此時將屬性設定為readonly
2、當用戶正式提交了表單後需要等待管理員的資訊驗證,不允許使用者再更改表單中的資料,而是隻能夠檢視,由於disabled的作用元素範圍大,所以此時應該使用disabled,但同時應該注意的是要將submit button也disabled掉,否則只要使用者按了這個按鈕,如果在資料庫操作頁面中沒有做完整性檢測的話,資料庫中的值會被清除。
3、在使用者按了提交按鈕後,利用javascript將提交按鈕disabled掉,可防止在網路條件比較差的環境下,使用者反覆點選提交按鈕導致資料冗餘地存入資料庫

 

css樣式設定中有幾個功能相同但表現形式卻略有差異的屬性,今天在通過js更改物件的樣式屬性的時候就發現display和visible這兩個貌似相同,其實還是有些區別的,這裡順便也把看到的readonly和disabled的區別也分享一下。

display和visible的區別:

(1)首先說明的是display:none和visible:hidden都能夠實現將網頁上某個元素隱藏起來。

(2)如果在樣式檔案或頁面檔案程式碼中直接用display:none對元素進行了隱藏,載入頁面後,在沒有通過js設定樣式使元素顯示的前提下,使用js程式碼會無法正確獲得該元素的一些屬性,比如offSetTop,offSetLeft等,返回的值會為0,通過js設定style.display來使元素顯示後才能正確獲得這些值。

(3)使用display:none隱藏的元素不會被百度等搜尋網站檢索,會影響到網站的SEO,某些情況下可以使用left:-100000px來達到同樣效果。

(4)如果是通過樣式檔案或方式來設定元素的display:none樣式,用js設定style.display=”“並不能使元素顯示,可以使用block或inline等值來代替。通過style=”display:none”直接在元素上進行的設定不會有這個問題。

(5)將元素設定為display:none將不為被隱藏的物件保留其物理空間,即該物件在頁面上徹底消失,通俗來說就是看不見也摸不到。而將元素設定為visibility:hidden則僅使物件在網頁上不可見,但該物件在網頁上所佔的空間沒有改變,通俗來說就是看不見但摸得到。

Readonly和Disabled的區別:

(1)Readonly和Disabled它們都能夠做到使使用者不能夠更改表單域中的內容。

(2)在disabled和readonly這兩個屬性都設定為true的情況下,form屬性將不能被編輯。

(3)如果一個輸入項的disabled設為true,則該表單輸入項不能獲取焦點,使用者的所有操作(滑鼠點選和鍵盤輸入等)對該輸入項都無效。而readonly只是針對文字輸入框這類可以輸入文字的輸入項,如果設為true,使用者只是不能編輯對應的文字,但是仍然可以聚焦焦點。

(4)Readonly只針對input(text / password)和textarea有效,而disabled對於html中所有的表單元素都有效,但是在表單元素在使用了disabled後,當我們將表單以POST或GET的方式提交之後,這個元素的值不會被提交,而被設定為readonly的表單元素的值還是會被提交的。 一般比較常用的情況是:

(1)在某個表單中為使用者預填了某個唯一識別程式碼,不允許使用者改動,但是在提交時需要傳遞該值,此時應該將它的屬性設定為readonly 。

(2)經常遇到當用戶正式提交了表單後需要等待管理員的資訊驗證,這就不允許使用者再更改表單中的資料,而是隻能夠檢視,由於disabled的作用元素範圍大,所以此時應該使用disabled,但同時應該注意的是要將submit button也disabled掉,否則只要使用者按了這個按鈕,如果在資料庫操作頁面中沒有做完整性檢測的話,資料庫中的值就會被清除。如果說在這種情況下用readonly來代替disabled的話,若表單中只有input(text / password)和textarea元素,那還是可以的,如果存在其他發元素,比如select,使用者可以在重新改寫值後按回車鍵進行提交(回車是預設的submit觸發按鍵) 。

(3)我們常常在使用者按了提交按鈕後,利用JavaScript將提交按鈕disabled掉,這樣可以防止網路條件比較差的環境下,使用者反覆點提交按鈕導致資料冗餘地存入資料庫。