在頁面上使用快捷鍵盤快捷定位到支付方式選擇框(一個下拉列表)并進行選擇,在網(wǎng)上找了些資料后,得出目前比較好的處理方式在此與大家分享下,希望對大家有所幫助
在開發(fā)中,遇到這樣一個需求情況,因此記錄下來以備用
需求背景
在頁面上使用快捷鍵盤快捷定位到支付方式選擇框(一個下拉列表)并進行選擇。
技術(shù)難點
目前瀏覽器并不支持通過代碼定位下拉列表時就列出其下所有選項,只能通過鼠標點擊。
在網(wǎng)上找了些資料后,得出目前比較好的處理方式;
利用select的size屬性,配合盒子布局的position屬性來實現(xiàn),具體代碼如下:
代碼如下:
<td align="right">
支付方式:
</td>
<td style="padding:0px;vertical-align:top;">
<!-- 這里必須用div包著select,否則在ff下不兼容 -->
<span style="color:#ff0000"><div style="position:relative;padding:1px;">
</span> <select id="payType" name="payType" style="position:absolute;" onfocus="expand(this)" onblur="unexpand(this)">
<option>人民幣</option>
<option>美元</option>
<option>信用卡</option>
<option>港幣</option>
<option>港幣</option>
</select>
<span style="color:#ff0000"></div>
</span></td>
expand和unexpand方法都很簡單:
代碼如下:
function expand(obj){
$(obj).attr("size","10");
}
function unexpand(obj){
$(obj).attr("size","1");
}
把select的position設置為absolute,使其不影響dom的流布局。再把其容器的position設置為relative,使select根據(jù)其容器來定位。
這里需要注意的是在table元素中必須使用div作為select的容器,因為根據(jù)w3c的css標準,在table相關(guān)元素設置position:relative是未定義的,所以在ff下select元素會直接根據(jù)body元素來定位。
參考的資料:
http://www.php-insite.com/autoexpand_select.html 直接查看頁面源代碼
http://bbs.csdn.net/topics/330158935 留意lingshuo1993的回答