參考CSS中的readonly和disabled
Readonly
<input type="text" name="name" value="xxx" readonly="true"/>
Disabled
<input type="text" name="name" value="xxx" disabled="true"/>
共同點(diǎn):
如果設(shè)為true,則form屬性將不能被編輯获搏,文本框不能輸入文字窥翩。
區(qū)別:
1、樣式不同操禀。
readonly只是使文本框不能輸入,外觀沒有變化横腿。
disabled會使文本框變灰颓屑。
2、有效范圍不同耿焊。
readonly只針對input(text / password)和textarea之類可以輸入文本的輸入項(xiàng)有效揪惦。
disabled對于所有的表單元素都有效。
3罗侯、是否能獲取鼠標(biāo)焦點(diǎn)器腋。
readonly設(shè)為true,用戶不能編輯钩杰,但鼠標(biāo)仍然可以聚焦纫塌。
disabled設(shè)為true,輸入項(xiàng)不能獲取焦點(diǎn)讲弄,用戶的所有操作(鼠標(biāo)點(diǎn)擊措左、鍵盤輸入等)對該輸入項(xiàng)都無效。
4避除、是否回傳數(shù)據(jù)怎披。
表單元素使用了readonly后,會將該值傳遞出去瓶摆,即通過request.getParameter("name")可以得到文本框內(nèi)的內(nèi)容凉逛。
表單元素使用了disabled后,當(dāng)我們將表單以POST或GET的方式提交的話群井,這個元素的值不會被傳遞出去鱼炒,即通過request.getParameter("name")得不到文本框中的內(nèi)容(如果有的話)。
比較常見的情況如下所述。
情況一:
在某個表單中為用戶預(yù)填了某個唯一識別代碼昔瞧,不允許用戶改動,但是在提交表單時作為form提交這項(xiàng)值——此時應(yīng)該將它的屬性設(shè)置為readonly 菩佑。
情況二:
當(dāng)用戶正式提交了表單后需要等待管理員的信息驗(yàn)證自晰,這就不允許用戶再更改表單中的數(shù)據(jù),而是只能夠查看——由于disabled的作用元素范圍大稍坯,所以此時應(yīng)該使用disabled酬荞。同時,應(yīng)該注意的是要將submit button也disabled掉瞧哟,否則只要用戶按了這個按鈕混巧,如果在數(shù)據(jù)庫操作頁面中沒有做完整性檢測的話,數(shù)據(jù)庫中的值就會被清除勤揩。
如果說在這種情況下用readonly來代替disabled咧党,若表單中只有input(text / password)和textarea元素,那還是可以的陨亡;
如果存在其他元素傍衡,比如select,readonly屬性對它們無效负蠕,用戶可以在重新改寫值后按回車鍵進(jìn)行提交(回車是默認(rèn)的submit觸發(fā)按鍵)蛙埂。
所以,我們常常在用戶按了提交按鈕后遮糖,利用javascript將提交按鈕disabled掉绣的,這樣可以防止網(wǎng)絡(luò)條件比較差的環(huán)境下,用戶反復(fù)點(diǎn)提交按鈕導(dǎo)致數(shù)據(jù)冗余地存入數(shù)據(jù)庫欲账。