首頁  >  文章  >  web前端  >  處理表單使input等文字方塊為只讀不可編輯的方法

處理表單使input等文字方塊為只讀不可編輯的方法

阿神
阿神原創
2017-03-18 11:23:283245瀏覽

方法1: onfocus=this.blur() 

<input type="text" name="input1" value="中国" onfocus=this.blur()>

方法2:readonly 

<input type="text" name="input1" value="中国" readonly> 
<input type="text" name="input1" value="中国" readonly="true">

方法3: disabled 

#
<input type="text" name="input1" value="中国" disabled>

Readonly和Disabled它們都能夠做到使用戶不能夠更改表單域中的內容。但是它們之間有著微小的差別,總結如下:
    Readonly只針對input(text / password)和textarea有效,而disabled對於所有的表單元素都有效,但是表單元素在使用了disabled後,當我們將表單以POST或GET的方式提交的話,這個元素的值不會被傳遞出去,而readonly會將該值傳遞出去(readonly接受值更改可以回傳,disable接受改但不回傳資料)。
一般比較常用的情況是:
在某個表單中為使用者預填了某個唯一識別代碼,不允許使用者改動,但是在提交時需要傳遞該值,此時應該將它的屬性設定為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的一項提交。

一些效能問題:
display: none和visibility:hidden的差別就是visibility:hidden會保留元素的空間
repaint(重繪) ,repaint當變更發生時,元素的外觀會改變,且在沒有改變佈局的情況下發生,如改變outline,visibility,background color,不會影響到dom結構渲染。
reflow(渲染),與repaint區別就是他會影響到dom的結構渲染,同時他會觸發repaint,他會改變他本身與所有父輩元素(祖先),這種開銷是非常昂貴的,導致性能下降是必然的,頁面元素越多效果越明顯。
所以display:none才會產生reflow
visibility:hidden只會觸發repaint

相關文章:

js設定input文字方塊只讀

透過js設定所有form物件為唯讀

#使用js動態控制input框的唯讀屬性

#

以上是處理表單使input等文字方塊為只讀不可編輯的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn