Targetting :: selection в jQuery для вывода?

74
8

Я смотрю на http://jsfiddle.net/duhTB/, который использует CSS для целевого :: выбора.

Теперь то, что я пытаюсь сделать, немного отличается. Потерпите меня.

Вот код: http://jsfiddle.net/Ywq2x/15/. Я пытаюсь сделать так, чтобы, выделив текст, который я ввел в текстовую область # id_input-id'd, и нажмите ctrl + b, выделенный текст будет выведен на предварительный блок # id_selected-id'd.

Если вы видите какие-либо проблемы с кодом, который я использую, можете ли вы указать их и сообщить мне, как я могу исправить проблемы? Если то, что я пытаюсь сделать, невозможно с помощью jQuery, можете ли вы объяснить, почему? И если есть другой способ, вы можете это объяснить?

Спасибо.

Для удобства и долговечности я также отправлю код, о котором идет речь, здесь:

JS/JQuery

$(document).ready(function(e) {
$("#id_input").keypress(function(e) {
if(e.keyCode == 66 && e.ctrlKey) {
var val = $("#id_input::selection").val();
$("#id_selected").text(val);
}
});
});

HTML:

<p>A1:</p>
<textarea rows="2" cols="30" class="txt_input_area dotted" id="id_input">
</textarea>
<div class="now_working">
<pre id="id_selected"></pre>
</div>

спросил(а) 2012-12-27T04:03:00+04:00 8 лет, 2 месяца назад
1
Решение
86

::selected селектор ::selected не работает в jQuery, но хорошей новостью является наличие плагина jquery-textrange от dwieeb для извлечения выделенного текста из полей ввода и текстовых полей.

Попробуй это:

$(function() {
$("#id_input").on('keydown', function(e) {
if (e.keyCode == 66 && e.ctrlKey) {
e.preventDefault();//inhibit opening Opera sidebar
}
}).on('keyup', function(e) {
if (e.keyCode == 66 && e.ctrlKey) {
var txt = $("#id_input").textrange('get', 'text');
$("#id_output").text(txt);
}
});
});

Рабочий ДЕМО

Для записи это полные возможности jquery-textrange:

    ('get', 'position'): расположение курсора в текстовом поле ('get', 'start'): начальная позиция выбранного текста в текстовом поле ('get', 'end'): конечная позиция выделенного текста в текстовом поле ('get', 'length'): длина выделенного текста в текстовом поле ('get', 'text'): выбранный текст ('set'): выберите весь текст в поле ('set', n): выбирает из n-го символа в конец текста ('set', n, length): начиная с n-го символа, выбирает символы length (или до конца текста) ('set', n, 0): эквивалентно ('setcursor', n) ('setcursor', n): устанавливает курсор в указанную позицию в текстовом поле ("заменить", "некоторый текст"): заменить выделенный текст или вставить в местоположение курсора.

пересмотрено 28 февраля 2014 года, чтобы отразить последнее состояние плагина

С благодарностью dwieeb за плагин, который снимает боль с самого тошнотворного аспекта веб-программирования - текстовых диапазонов.

ответил(а) 2012-12-27T10:12:00+04:00 8 лет, 2 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема