2012-09-17 38 views
3

我有一個網站形式的腳本,按下Enter鍵或右箭頭將焦點更改爲下一個字段,或通過按下左箭頭將焦點更改爲前一場。導航表單域並使用箭頭鍵編輯文本

我需要能夠使用箭頭鍵在編輯文本時更改光標位置,而不必更改字段焦點,只有當光標位於文本的開頭或結尾時才轉到下一個字段。

我該如何做到這一點?

腳本代碼如下:

function tabulacion_manual(e,adelante,atras,saltar){ 
    if(saltar==1) 
    { 
     setTimeout(function(){ 
      $(adelante).focus(); 
      $(adelante).select(); 
     },150); 
    }else{ 
     //tecla = (document.all) ? e.keyCode : e.which; 
     tecla = (window.event) ? window.event.keyCode : e.keyCode; 

     switch(tecla){ 
      case 37: //atras 
       $(atras).focus(); 
       break; 
      case 38: //arriba 
       $(atras).focus(); 
       break; 
      case 40: //abajo 
       $(adelante).focus(); 
       break; 
      case 39: //derecha 
       $(adelante).focus(); 
       break; 
      case 13: //enter 
       $(adelante).focus(); 
       break; 
     } 
    } 
    return true; 
} 

的HTML代碼:

<s:textfield name="programaFaena.fecha" maxlength="10" tabindex="1" onkeypress="return tabulacion_manual(event,this,next())" autocomplete="off" readonly="false" > 
+1

你的問題是什麼?什麼不工作? –

+0

也可以提供一段html代碼嗎? –

+0

所以你的問題「處理關鍵事件時,如何判斷光標是否位於文本字段的開頭或結尾?」 (我建議你避免這種類型的功能:用戶希望使用製表符和shift-tab在字段之間移動 - 除了Opera用戶,他們獲得不同的鍵盤控制集合 - 但用戶希望鍵盤導航是在他們選擇的瀏覽器中保持一致。) – nnnnnn

回答

1

例如:

 case 37: //atras 
      //if the cursor is at the beginning of the field 
      if (event.target.selectionEnd == 0) { 
       $(atras).focus(); 
      } 
      break; 
     ... 
     case 39: //derecha 
      //if the cursor is at the end of the field 
      if (event.target.textLength-event.target.selectionStart == 0) { 
       $(adelante).focus(); 
      } 
      break; 
0

正文長度並沒有捕捉到字段中的文本長度爲我;我用event.target.value.length