2017-02-15 34 views
0

我有這個功能是假設通過diff textarea傳遞數據,但是,光標一直跳到文本的末尾。函數參數導致光標跳到.keyup

function KeepReferencesInSync(referenceInput) { 
    $(referenceInput).keyup(function() { 
    $("input[name=Reference]").val($(this).val()); 
    } 
)} 
+0

你能解釋一下嗎? –

+0

請提供[mcve] – charlietfl

+0

用戶將根據他們單擊的單選按鈕「更改」參考textarea。這個想法是讓textarea看起來像一個單獨的領域,通過不同的選項來傳遞數據。 –

回答

1

我得到了一個解決方案。

我需要記錄光標位置並設置[setSelectionRange]以確保光標不跳轉。見下文。

function KeepReferencesInSync(referenceInput) { 
    $(referenceInput).on('keyup', function() { 

     //get selection position 
     var start = this.selectionStart, 
     end = this.selectionEnd; 

     $("input[name=Reference]").val($(this).val()); 

     //set the range 
     this.setSelectionRange(start, end); 
    }) 
} 
0

您可以嘗試這種方法。這不是最先進的,但有效。

// Create a list of zone/input/ele 
 
var zoneList = [$('#zone1'),$('#zone2'),$('#zone3')]; 
 

 
// For each zone 
 
$.each(zoneList, function(index, zoneForEvent){ 
 
    // Attach keyup event 
 
    zoneForEvent.on('keyup',function(){ 
 
     // Get root zone info who trigger event 
 
     var rootZoneId = this.id; 
 
     var rootZoneValue = this.value; 
 
     // Loop on each zone 
 
     $.each(zoneList, function(index, zoneDestination){ 
 
      // If zone destination is not root zone 
 
      if (zoneDestination.id !== rootZoneId) { 
 
       // Copy value of root element 
 
       zoneDestination.val(rootZoneValue); 
 
      } 
 
     });  
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<textarea id="zone1"></textarea> 
 
<input type="text" id="zone2"></input> 
 
<textarea id="zone3"></textarea>