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,使用者可以在重新改寫值後按Enter鍵進行提交(回車是預設的submit觸發按鍵)
③我們常常在使用者按了提交按鈕後,利用javascript將提交按鈕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,使用者可以在重新改寫值後按Enter鍵進行提交(回車是預設的submit觸發按鍵)
③我們常常在使用者按了提交按鈕後,利用javascript將提交按鈕disabled掉,這樣可以防止網路條件比較差的環境下,使用者反覆點提交按鈕導致資料冗餘地存入資料庫。
相關文章
- disabled和readonly屬性區別
- input屬性disabled和readonly的區別(轉)
- jquery-disabled和readonlyjQuery
- form序列化提交readonly和disabledORM
- html表單控制元件禁用屬性readonly VS disabled介紹HTML控制元件
- ../和./和/的區別
- LinkedList和ArrayList的區別、Vector和ArrayList的區別
- http和https的區別/get和post的區別HTTP
- ||和??的區別
- /*和/**的區別
- jquery $(this) 和this的區別jQuery
- JQuery this和$(this)的區別jQuery
- T和?的區別
- makefile =和:=的區別
- ++a和a++的區別
- ./ 和sh 的區別
- 和區別
- springmvc和springboot的區別SpringMVCSpring Boot
- SDK和API的區別?API
- ArrayList和LinkedList的區別?
- button和submit的區別MIT
- MTV和MVC的區別MVC
- hadoop和spark的區別HadoopSpark
- rpop 和 brpop的區別
- WebApi和MVC的區別WebAPIMVC
- GET和POST的區別?
- ArrayList和LinkedList的區別
- WBS和TASK的區別?
- JavaScript中for in 和for of的區別JavaScript
- innerText 和 textContent 的區別?
- var 和 let 的區別
- @JsonProperty和@JsonAlias的區別JSON
- POST 和 GET 的區別
- sass和less的區別
- MySQL和Oracle的區別MySqlOracle
- sizeThatFits 和 sizeToFit的區別
- GitHub和GitLab的區別GithubGitlab
- Js中for in 和for of的區別JS
- isKindOfClass和isMemberOfClass的區別