<select class="js-select-id " style="margin-top:15px; "> <option style="color:#000;" value="身份證">身份證編號(hào)</option> <option style="color:#000;" value="護(hù)照">護(hù)照編號(hào)</option></select><input type="text" id="usr_nm" name="usr_nm" maxlength="50" value=""><a class="link" href="javascript:void(0);">驗(yàn)證</a>//腳本增加disabled<script type="text/javascript"> jQuery('input#usr_nm, .js-select-id, .link').attr('disabled', 'disabled');</script>
1.當(dāng)我將這些標(biāo)簽全部設(shè)為disabled之后,發(fā)現(xiàn)<a>
標(biāo)簽仍然有效,且后臺(tái)無(wú)法獲取input標(biāo)簽中的值了;
2.當(dāng)我將這些標(biāo)簽全部設(shè)為readonly之后, 發(fā)現(xiàn)<select>
標(biāo)簽仍然有效,<a>
標(biāo)簽依然有效;
<select class="js-select-id " style="margin-top:15px; "> <option style="color:#000;" value="身份證">身份證編號(hào)</option> <option style="color:#000;" value="護(hù)照">護(hù)照編號(hào)</option></select><input type="text" id="usr_nm" name="usr_nm" maxlength="50" value="">//我將<a>標(biāo)簽換成<button>標(biāo)簽,同時(shí)加上`cursor:pointer`使鼠標(biāo)移到上面有小手圖形<button class="link" style="cursor:pointer">驗(yàn)證</button><script type="text/javascript">//input標(biāo)簽我用readonly,select標(biāo)簽繼續(xù)用disabledjQuery('#usr_nm').attr('readonly', 'readonly');jQuery('.js-select-id').attr('disabled', 'disabled');</script>
按照W3C的規(guī)范:
設(shè)置為disabled的input將會(huì)有下面的限制:
- 不能接收焦點(diǎn)(如:jQuery(‘#usr_nm’).focus();)
- 使用tab鍵時(shí)將被跳過(guò)
- 可能不是successful的設(shè)置為readonly的input將會(huì)有下面的限制:
- 可以接收焦點(diǎn)但不能被修改
- 可以使用tab鍵進(jìn)行導(dǎo)航
- 可能是successful的
- 只有successful的表單元素才是有效數(shù)據(jù),也就是可以進(jìn)行form表單提交。disabled和readonly的文本輸入框只能通過(guò)腳本進(jìn)行修改value屬性。
1、Readonly只針對(duì)input(text / password)和textarea有效,而disabled對(duì)于所有的表單元素都有效,
2、但是表單元素在使用了disabled后,當(dāng)我們將表單以POST或GET的方式提交的話,這個(gè)元素的值不會(huì)被傳遞出去,而readonly會(huì)將該值傳遞出去(readonly接受值更改可以回傳,disable接受改但不回傳數(shù)據(jù))。disabled和readonly這兩個(gè)屬性有一些共同之處,比如都設(shè)為true,則form屬性將不能被編輯,往往在寫(xiě)js代碼的時(shí)候容易混合使用這兩個(gè)屬性,其實(shí)他們之間是有一定區(qū)別的:
1. 如果一個(gè)輸入項(xiàng)的disabled設(shè)為true,則該表單輸入項(xiàng)不能獲取焦點(diǎn),用戶的所有操作(鼠標(biāo)點(diǎn)擊和鍵盤(pán)輸入等)對(duì)該輸入項(xiàng)都無(wú)效,最重要的一點(diǎn)是當(dāng)提交表單時(shí),這個(gè)表單輸入項(xiàng)將不會(huì)被提交。
2. 而readonly只是針對(duì)文本輸入框這類(lèi)可以輸入文本的輸入項(xiàng),如果設(shè)為true,用戶只是不能編輯對(duì)應(yīng)的文本,但是仍然可以聚焦焦點(diǎn),并且在提交表單的時(shí)候,該輸入項(xiàng)會(huì)作為form的一項(xiàng)提交。
===================
一般比較常用的情況是:
1.在某個(gè)表單中為用戶預(yù)填了某個(gè)唯一識(shí)別代碼,不允許用戶改動(dòng),但是在提交時(shí)需要傳遞該值,此時(shí)應(yīng)該將它的屬性設(shè)置為readonly 。
2.經(jīng)常遇到當(dāng)用戶正式提交了表單后需要等待管理員的信息驗(yàn)證,這就不允許用戶再更改表單中的數(shù)據(jù),而是只能夠查看,由于disabled的作用元素范圍大,所以此時(shí)應(yīng)該使用disabled,但同時(shí)應(yīng)該注意的是要將submit button也disabled掉,否則只要用戶按了這個(gè)按鈕,如果在數(shù)據(jù)庫(kù)操作頁(yè)面中沒(méi)有做完整性檢測(cè)的話,數(shù)據(jù)庫(kù)中的值就會(huì)被清除。如果說(shuō)在這種情況下用readonly來(lái)代替disabled的話,若表單中只有input(text / password)和textarea元素,那還是可以的,如果存在其他發(fā)元素,比如select,用戶可以在重新改寫(xiě)值后按回車(chē)鍵進(jìn)行提交(回車(chē)是默認(rèn)的submit觸發(fā)按鍵)
3.我們常常在用戶按了提交按鈕后,利用javascript將提交按鈕disabled掉,這樣可以防止網(wǎng)絡(luò)條件比較差的環(huán)境下,用戶反復(fù)點(diǎn)提交按鈕導(dǎo)致數(shù)據(jù)冗余地存入數(shù)據(jù)庫(kù)
參考資料:
https://www.cnblogs.com/luoguixin/p/6593993.html
http://blog.csdn.net/u014185140/article/details/51985147
聯(lián)系客服