DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> HTML基礎知識 >> HTML和Xhtml >> 使select在選中/聚焦時列出所有選項目前比較好的處理方式
使select在選中/聚焦時列出所有選項目前比較好的處理方式
編輯:HTML和Xhtml     
在開發中,遇到這樣一個需求情況,因此記錄下來以備用

需求背景

在頁面上使用快捷鍵盤快捷定位到支付方式選擇框(一個下拉列表)並進行選擇。

技術難點

目前浏覽器並不支持通過代碼定位下拉列表時就列出其下所有選項,只能通過鼠標點擊。

在網上找了些資料後,得出目前比較好的處理方式;

利用select的size屬性,配合盒子布局的position屬性來實現,具體代碼如下:

復制代碼代碼如下:
<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根據其容器來定位。

這裡需要注意的是在table元素中必須使用div作為select的容器,因為根據w3c的css標准,在table相關元素設置position:relative是未定義的,所以在ff下select元素會直接根據body元素來定位。

參考的資料:

http://www.php-insite.com/autoexpand_select.html 直接查看頁面源代碼
http://bbs.csdn.net/topics/330158935 留意lingshuo1993的回答
XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved