日期:2014-05-16  浏览次数:20352 次

紧急求救,如何用js实现类似9宫格输入法
也就是如果页面有一个编辑框,如果只通过0~9十个数字键,可以输入包括26个字母(不考虑大小写)+0~9在内的36个字符,比如数字'1'键,快速按一下输入'1',按2下输入'A',按3下输入'B',按4下输入'C',按5下又回到'1'。
如何实现如上功能,大神求救。

------解决方案--------------------
LZ看下这个是不是你要的效果


<style type="text/css">
td{
  width :50px;
  height:50px;
  text-align: center;
  cursor: pointer;
}
#preview , #result{
  width :200px;
  height :100px;
  border: 1px solid;
}
</style>
Preview
<div id="preview"></div>
Result
<div id="result"></div>
<table border="1">
  <tr>
      <td onclick="fn(1)">1</td>
      <td onclick="fn(2)">2,A,B,C</td>
      <td onclick="fn(3)">3,D,E,F</td>      
  </tr>
  <tr>
      <td onclick="fn(4)">4,G,H,I</td>
      <td onclick="fn(5)">5,J,K,L</td>
      <td onclick="fn(6)">6,M,N,O</td>      
  </tr>
  <tr>
      <td onclick="fn(7)">7,P,Q,R,S</td>
      <td onclick="fn(8)">8,T,U,V</td>
      <td onclick="fn(9)">9,W,X,Y,Z</td>      
  </tr>
</table>
<script type="text/javascript">
var data = [  
              [], 
              [1],
              [2,'A','B','C'],
              [3,'D','E','F'],
              [4,'G','H','I'],
              [5,'J','K','L'],
              [6,'M','N','O'],
              [7,'P','Q','R','S'],
              [8,'T','U','V'],
              [9,'W','X','Y','Z']
          ];
var click_info = {} , prevIndex = -1 , isFirst = true;
function fn(_index){
  if(prevIndex!=_index && !isFirst){
    click_info[prevIndex].clicks = 0;
    clearTimeout(click_info[prevIndex].clock);
  }
  prevIndex = _index;
  isFirst = false;
  if(click_info.hasOwnProperty(_index)){
    ++click_info[_index].clicks;
    clearTimeout(click_info[_index].clock);    
  }else{
    click_info