可選擇輸入框

從網上找了份web前端的面試題,有一道題是設計出既能在文本框中輸入,又能在下拉框中選擇的組件(如下圖)。稍微一想沒有思路,但是這種組件還算經常見到。參考了一下網上別人的代碼,自己也搞了個。

思路:隱藏或者說是遮住下拉菜單的按鈕左側的部分,在按鈕左側該位置放上輸入框。然後利用Javascript,將用戶從下拉菜單選擇的選項的值賦給輸入框。

html代碼:

  1. <body> 
  2. <form method="get" action="#"> 
  3.     <p id="select" > 
  4.         <select> 
  5.             <option value="廣州">廣州</option> 
  6.             <option value="深圳">深圳</option> 
  7.             <option value="珠海">珠海</option> 
  8.         </select> 
  9.     </p> 
  10.     <p id="input"> 
  11.         <input type="text" value="廣州" /> 
  12.     </p> 
  13. </form> 
  14. </body> 

css

  1. <style type="text/css"
  2. * { 
  3.     margin:0
  4.     padding:0
  5. form { 
  6.     position:relative
  7.  
  8. #select { 
  9.     position:absolute
  10.     left:200px
  11.     top:20px
  12.     width:18px
  13.     overflow:hidden
  14. #select select { 
  15.     width:171px
  16.     margin-left:-153px
  17. #input { 
  18.     position:absolute
  19.     left:47px
  20.     top:20px
  21. </style> 

註釋:  下拉菜單按鈕的寬度爲18px

input框默認寬度爲149px,每個邊框均爲2px(chrome中)

因而select的寬度爲149 + 2*2 + 18 px = 171px

        select元素上的margin-left:-153px;很重要,配合外層框的樣式,使下拉框只顯示最右側         18px寬的按鈕。

Javascript代碼:

  1. <script type="text/javascript"
  2.     window.onload = init; 
  3.     function init(){ 
  4.         document.getElementsByTagName("select")[0].onchange = function(){ 
  5.             document.getElementsByTagName("input")[0].value = this.value; 
  6.         } 
  7.     } 
  8. </script> 

效果如下:

參考文章:http://blog.doyoe.com/article.asp?id=163

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章