2013-12-11 4 views
6

Есть ли способ выделить часть текста в textarea.
Для Ex: Произнесите текст «Привет @twitter @twitpic» и теперь я хотел бы подчеркнуть @Twitter и @twitpic только и не Привет. Это должно произойти «на лету».
Я не хочу использовать IFrameКак выделить часть текста в textarea

Заранее спасибо

+0

смотреть на это http://stackoverflow.com/questions/12831101/format-text -in-a-textarea – spezzino

+0

- это те тексты, которые вы хотите выделить всегда, начиная с @? –

+0

@ pay4m -> слова начинаются с @ или #. Как и редактор twitter. Спасибо –

ответ

4

без упаковки тег вокруг конкретных слов, вы не можете выделить его (или, как я сказал, по крайней мере, я понятия не имею, как это сделать). , но если нет никаких проблем с тегами обертки, вы должны использовать regEx.

слов, начинающихся с @:

replace(/@([^ ]+)/g, '<span class="atsign">@$1</span>'); 

и слова, начинающиеся с #:

status.replace(/#([^ ]+)/g, '<span class="hashtag">#$1</span>'); 

проверки this fiddle

EDIT: вы можете заменить

var status = 'I tweeted something #one #two @three @four'; 

с

var status = $('#phrase').text(); 
+0

Вы, ребята, сумасшедшие!. Отличный ответ. Ты спас свой день. Большое спасибо. –

+0

-> как выделить сочетание обоих одновременно? Мой код кажется неправильным. Посмотрите на это: var editorData = $ ('# taEditor'). Val(); editorData = editorData.replace (/ @ ([^] +)/g, ' @ $ 1'); editorData = editorData.replace (/ # ([^] +)/g, ' # $ 1'); $ ('# livePreview'). Html (editorData); ' –

+1

Чтобы сделать оба раза, попробуйте '/ [@ #] ([^] +)/g' – gaynorvader

3

Использование setSelectionRange метода по этому тексту

Пример кода:

<body> 
    <section> 
     <textarea id="textarea"></textarea> 
     <button id="hgh">Hightlight @twiiter</button> 
    </section> 

    <script> 

     window.onload = function() { 

      var textarea = document.getElementById("textarea"); 
      var checkError = document.getElementById("hgh"); 

      checkError.addEventListener("click", function() { 

       var index = textarea.innerText.indexOf("@twitter"); 
       if(index >= 0) 
        textarea.setSelectionRange(index, index + 8); 
      }); 
     } 

    </script> 
</body> 
Смежные вопросы