天天看點

【轉載】readonly 和 disable的差別

一、readonly 和 disable 的寫法

Readonly和Disabled 兩種屬性的寫法如下:

1、<input type="text" name="name" value="xxx" readonly="true"/>

2、<input type="text" name="name" value="xxx" disabled="true"/>

二、共同點:

如果設為true,則form屬性将不能被編輯,文本框不能輸入文字。

三、差別:

1、樣式不同。

readonly隻是使文本框不能輸入,外觀沒有變化。

disabled會使文本框變灰。

2、有效範圍不同。

readonly隻針對input(text / password)和textarea之類可以輸入文本的輸入項有效。

disabled對于所有的表單元素都有效。

3、是否能擷取滑鼠焦點。

readonly設為true,使用者不能編輯,但滑鼠仍然可以聚焦。

disabled設為true,輸入項不能擷取焦點,使用者的所有操作(滑鼠點選、鍵盤輸入等)對該輸入項都無效。

4、是否回傳資料。

表單元素使用了readonly後,會将該值傳遞出去,即通過request.getParameter("name")可以得到文本框内的内容。

表單元素使用了disabled後,當我們将表單以POST或GET的方式送出的話,這個元素的值不會被傳遞出去,即通過request.getParameter("name")得不到文本框中的内容(如果有的話)。

比較常見的情況如下所述。

情況一:

在某個表單中為使用者預填了某個唯一識别代碼,不允許使用者改動,但是在送出表單時作為form送出這項值——此時應該将它的屬性設定為readonly 。

情況二:

當使用者正式送出了表單後需要等待管理者的資訊驗證,這就不允許使用者再更改表單中的資料,而是隻能夠檢視——由于disabled的作用元素範圍大,是以此時應該使用disabled。同時,應該注意的是要将submit button也disabled掉,否則隻要使用者按了這個按鈕,如果在資料庫操作頁面中沒有做完整性檢測的話,資料庫中的值就會被清除。

如果說在這種情況下用readonly來代替disabled,若表單中隻有input(text / password)和textarea元素,那還是可以的;

如果存在其他元素,比如select,readonly屬性對它們無效,使用者可以在重新改寫值後按Enter鍵進行送出(回車是預設的submit觸發按鍵)。

是以,我們常常在使用者按了送出按鈕後,利用javascript将送出按鈕disabled掉,這樣可以防止網絡條件比較差的環境下,使用者反複點送出按鈕導緻資料備援地存入資料庫。