JQuery: найти, какое текстовое поле имеет каретку / выбран - PullRequest
0 голосов
/ 11 декабря 2010

У меня есть страница с несколькими текстовыми вводами и несколькими кнопками.Когда я нажимаю кнопку, я хочу, чтобы значение этой кнопки было вставлено в каретку, в каком бы поле он ни находился. Вот мой вызов функции:

$('li input[type="button"]').click(function(){$('#aTextInput').insertAtCaret($(this).val())});

Я хочу заменить $('#aTextInput') навход, который на самом деле имеет каретку в нем.Любые идеи?

( Вот функция insertAtCaret, прежде чем кто-либо спросит. Вам, вероятно, не нужно смотреть на это, если вам не интересно.)

Редактировать:

Итак, я попробовал это:

jQuery.extend(jQuery.expr[':'], {
    focus: "a == document.activeElement"
});

$('li input[type="button"]').click(function(){$('input:focus').insertAtCaret($(this).val())});

Но когда я нажимаю кнопку, ничего не происходит вообще.Я реализую это решение неправильно?

1 Ответ

3 голосов
/ 11 декабря 2010

Если у вас есть несколько текстовых областей, вы, вероятно, захотите сделать что-то подобное.

// any time a textarea gets focus, set the ID
$('textarea').focus(function(){
   focusID = $(this).attr('id');
});

// when the button is clicked
$('input[type="button"]').click(function(){    
    // insert the value into the textarea
    insertAtCaret(focusID,$(this).val())
});

Посмотрите мой пример на jsFiddle здесь

Проблема, с которой я столкнулся, заключалась в том, что при нажатии кнопки текстовая область теряла фокус, поэтому было трудно найти текстовую область, которая была в фокусе в момент нажатия кнопки.

EDIT

Я только что понял, что вы пытаетесь сделать это с помощью входных данных, новый jsFiddle здесь: http://jsfiddle.net/tVNDL/1/

// any time a input gets focus, set the ID
$('input').focus(function(){
   focusID = $(this).attr('id');
});

// when the button is clicked
$('input[type="button"]').click(function(){    
    // insert the value into the textarea
    insertAtCaret(focusID,$(this).val())
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...