2013年8月6日 星期二

用 jquery 製作自動伸展寬度的 input 欄位

auto extend

因為有需求所以研究怎麼寫這樣的 UI: 如果在input的時候,想要後面一直有固定的值的寫法,又希望在打的時候能夠自動跟著輸入的值,這樣看起來使用者會覺得這個值就是之後會輸入到系統的值。

首先準備 html:
  1. <div class="input_row clearfix">  
  2.     <label>Account</label>  
  3.     <div class="input_area">  
  4.         <input type="text" class="input_field" size="2">  
  5.         <span title="thisisacompanythisisacompany">@thisisacompanythisisacompany</span>  
  6.     </div>  
  7. </div>  

這邊簡單提一個東西,因為@後面的寬度也必須要固定,當長度太長的時候才不會爆版,又因為系統可以輸入的寬度可以到20個以上,為了讓版面好看,我就限制住寬度,再用CSS 3讓文字超過寬度會出現 "..." 的字,這樣做起來就很好看了。

  1. .input_area span{   
  2.     display:block;   
  3.     float:left;   
  4.     width:100px;   
  5.     text-overflow:ellipsis;   
  6.     overflow:hidden;   
  7. }  

IE就不管他了。

再來寫 js,讓輸入欄位可以跟著變動,這樣效果就完成了。
  1. function resizeInput() {   
  2.         $length=$(this).val().length;   
  3.         if($length==0){   
  4.             $(this).attr('size', 2);   
  5.         }else if($length<15){   
  6.             $(this).attr('size', $(this).val().length);   
  7.         }else{   
  8.             $(this).attr('size', 15);   
  9.         }      
  10.     }   
  11. $('.input_field')   
  12.     // event handler   
  13.     .keyup(resizeInput)   
  14.     // resize on page load   
  15.     .each(resizeInput);   
  16. });  

Demo

參考
Auto-scaling input[type=text] to width of value?
反應:

0 意見:

Related Posts Plugin for WordPress, Blogger...