Распознавать при написании между двумя знаками $$ - PullRequest
0 голосов
/ 11 марта 2012

У меня есть текстовое поле, в котором я пишу какой-то текст.

Ради простоты, я хочу, чтобы alert('Boom!') выпрыгивал каждый раз, когда я начинаю писать между двумя $$.

Например, у меня есть пустое текстовое поле и начинаю печатать (курсор - знак "|")

Today is a really nice day|

ничего не происходит, начните печатать

Today is a really nice day, $|$

по-прежнему ничего, но теперь, когда я начинаю печатать

Today is a really nice day, $someText|$

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

Зачем мне нужна такая функция? Я хочу предварительный просмотр живого уравнения (рендеринг MathJax) каждый раз, когда пользователь начинает вводить свое уравнение, и я могу узнать, что это уравнение по знакам $$ (все, что находится между ними, отображается).

РЕДАКТИРОВАТЬ: В текстовом поле возможно несколько $$. Скрипт должен распознавать тот, который в данный момент активен (позиция курсора находится между $$).

1 Ответ

1 голос
/ 11 марта 2012

Вы можете использовать плагин jQuery caret

http://examplet.buss.hk/download/download.php?plugin=caret.1.01

примечание: отредактируйте и удалите эти символы из строки 8

и replace функционируют. (не для того, чтобы заменить что-либо, а для использования индекса совпадающего шаблона)

$("#myText").bind("keyup", function(e){
     var text = $(this).val();
     var caret = $(this).caret().start;

     if(text && text.length > 0){
        text.replace(/\$.*?\$/g, function(m, n){
           if(caret > n && caret < (n + m.length)){
              alert("BOOM");
           }
        });
     }
});

демо: http://jsfiddle.net/xqXXb/

Просто показываю, как это сделать. Вы можете улучшить это.

использование

$("#myText").bind("keyup keydown change", function(e){ ...

для лучшего результата.

...