2013-02-13 3 views
2

У меня есть сценарий, где я могу просто нажать на div и добавить информацию в текстовое поле. Это работает, однако курсор всегда находится в начале введенной мной информации.Как использовать фокус в 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 –

+0

До сих пор не работает. фокус все еще находится перед вставленным текстом. – Bryan

+0

Вы пытались использовать полную функцию SetCaretAtEnd из принятого ответа? Если это так, вы можете попробовать следующее: http://stackoverflow.com/questions/13425363/jquery-set-textarea-cursor-to-end-of-text Редактировать: Если элемент уже имеет фокус, вам может потребоваться позвонить '.blur()' заранее. –

ответ

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); 
    }); 
}); 

Просто изменил последовательность фокуса и Вэл в последнем Js вызова.

+0

Удалите лишние символы в конце вашего ссылка): - так что ссылка начала работать – Anton

+0

См. обновленный. Спасибо Антон –

+0

Работайте отлично. Спасибо, малыш. – Bryan

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

Смежные вопросы