函数参数导致游标跳转.keyup

时间:2017-02-15 14:15:34

标签: javascript jquery html google-chrome jquery-ui

我有这个函数,假设通过diff textarea传递数据,但是,游标一直跳到文本的末尾。

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

2 个答案:

答案 0 :(得分: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);
    })
}

答案 1 :(得分: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>
&#13;
&#13;
&#13;