2013-02-13 55 views
2

我有一個腳本,我只需點擊一個div並將信息添加到textarea。這是行得通的,但是光標總是在我插入的信息的開頭。如何在jquery中使用焦點?

<div id="click">Click to insert</div> 
<textarea id="info">I want to</textarea> 

這裏是jQuery的:

<script> 
    $(document).ready(function(){ 
     $('#click').on('click',function(){ 
      var i=$('#info').val(); 
      var n="Insert this";//information to be inserted 
      $('#info').val(i + n).focus(); 
     }); 
    }); 
</script> 

現在整個事情應該讀我想插入這個其次光標。相反,光標在這樣的中間我想[光標]插入這個。有沒有辦法讓光標可以集中在字段內容的末尾?

+0

這可能會幫助:http://stackoverflow.com/questions/4609405/set-focus-after-last-character-in-text-box – 2013-02-13 14:55:05

+0

仍然沒有工作。重點仍在插入文字之前。 – Bryan 2013-02-13 15:01:32

+0

您是否從已接受的答案中使用完整的SetCaretAtEnd函數進行嘗試?如果是這樣,你可以試試這個:http://stackoverflow.com/questions/13425363/jquery-set-textarea-cursor-to-end-of-text 編輯:如果元素已經有焦點,你可能需要調用'.blur()'事先。 – 2013-02-13 15:03:03

回答

3

試試這一個的jsfiddle http://jsfiddle.net/adiioo7/2D9Td/: -

$(document).ready(function() { 
    $('#click').on('click', function() { 
     var i = $('#info').val(); 
     var n = "Insert this"; //information to be inserted 
     $('#info').focus().val(i + n); 
    }); 
}); 

只是改變了焦點和Val的序列中的最後一個JS調用。

+0

刪除多餘的字符在你的最後鏈接): - 所以鏈接開始工作 – Anton 2013-02-13 15:09:20

+0

查看更新。謝謝安東 – 2013-02-13 15:10:33

+0

完美工作。感謝這個孩子。 – Bryan 2013-02-13 15:11:26

0

jQuery插件怎麼樣?

$.fn.setCaretToEnd = function() { 
    return this.each(function() { 
     if (this.setSelectionRange) { 
      this.focus(); 
      this.setSelectionRange(this.value.length, this.value.length); 
     } else if (this.createTextRange) { 
      var range = this.createTextRange(); 
      range.collapse(true); 
      range.moveEnd('character', this.value.length); 
      range.moveStart('character', this.value.length); 
      range.select(); 
     } 
    }); 
}; 

$(document).ready(function() { 
    $('#click').on('click', function() { 
     var i = $('#info').val(); 
     var n = "Insert this"; 

     $('#info').val(i + n).focus().setCaretToEnd(); 
    }); 
}); 

FIDDLE