2013-11-25 3 views
0

Я видел несколько таких вопросов, но не могу найти решение. У меня есть текстовое поле. Когда пользователь вводит текст, если они нажимают @, я хотел бы показать список элементов, которые они могут выбрать, в этой позиции каретки (т. Е. Место в текстовом поле, где будет отображаться следующий символ, не расположение курсора мыши).Как показать div в позиции текущего каретки в текстовом поле?

JSfiddle: http://jsfiddle.net/LR8pe/

Код:

$(".textarea").bind("keypress", function (e) { 
    if (String.fromCharCode(e.keyCode) == '@') { 
     $(".list").show(); 
    } else{ 
     $(".list").hide(); 
    } 
}); 

У меня есть основы механики вниз, но показ/скрытие в положении каретки где я застрял.

Я использую jquery/нокаут, но чистый JS в порядке со мной.

+0

проверить это сообщение http://stackoverflow.com/questions/19755633/detect-when-cursor-position-inside-input-change-in-jquery –

+0

«получить позицию x/y курсора в textarea» вызывает тонны ответов ... – epascarello

+0

@epascarello Я щелкнул по многим. Если вы видите тот, который помогает мне с текстовым полем и никакими другими сторонними библиотеками, я бы с удовольствием прочитал его. – SB2055

ответ

-1

Вот чисто CSS подход:

http://jsfiddle.net/p774G/2/

Объемного текстовое поле и список в контейнере:

<div class="spacer"></div> 
<div class="list-container"> 
    <textarea class="textarea"></textarea> 
    <ul class="list"> 
     <li>item</li> 
    </ul> 
</div> 

Измените CSS так, чтобы текстовое поле имеет фиксированный размер, то положение ваш список внизу:

textarea 
{ 
    width: 300px; 
    height: 70px; 
    padding: 3px; 
} 

.list { 
    list-style: none; 
    background-color: gray; 
    display: none; 

    position: absolute; 
    top: 76px; 
    left: 0; 

    margin: 0; 
    padding: 0; 
    border: 0; 
} 

.list-container 
{ 
    position: relative; 
} 

.list li 
{ 
    padding: 5px; 
    width: 294px; 
} 

ED IT:

Я бы не рекомендовал порождать этот ящик, в котором находится указатель мыши, так как вы не знаете, где у пользователя будет его или ее курсор. Это может быть страница со всем, что вы знаете. Это плохой опыт работы с пользователями. Вместо этого создайте его ниже textarea, как и в моем ответе.

+0

Это не то, о чем я просил, хотя я ценю ваше время. Мне нужно положение курсора, а не фиксированное положение. – SB2055

-1

Использование jsFiddle: http://jsfiddle.net/zCLu9/1/

В принципе, я создал 2 глобальные переменные, ответственные за проведение X мышки и Y координаты, которые обновляются на MouseMove, чтобы они всегда (ну, почти всегда) точны. Затем эти координаты используются для установки смещения элемента .list всякий раз, когда он должен отображаться.

Я также установил абсолютное положение элемента в CSS.

+0

Doh, я думал, что OP означает курсор мыши. * smh * –

+0

Я думаю, что он/она после позиции курсора ввода внутри текстового поля, а не курсора мыши. – Shai

+0

Опять же, не то, что я просил. Спасибо за попытку. – SB2055

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