Как выделить часть текста в textarea
есть ли способ выделить часть текста в textarea.
Например: скажем, текст "Привет @twitter @twitpic" и теперь я хотел бы выделить @twitter и @twitpic, а не Привет. Это должно произойти на лету.
Я не хочу использовать окне iframe
спасибо заранее
3 ответов
не оборачивая тег вокруг конкретных слов, вы не можете выделить его (или, как я уже сказал, по крайней мере, я понятия не имею, как). но если нет проблем с упаковкой тегов, вы должны использовать regEx.
для слов, начинающихся с @ :
replace(/@([^ ]+)/g, '<span class="atsign">@</span>');
и для слов, начинающихся с # :
status.replace(/#([^ ]+)/g, '<span class="hashtag">#</span>');
Регистрация эта скрипка
EDIT: вы можете заменить
var status = 'I tweeted something #one #two @three @four';
С
var status = $('#phrase').text();
использовать 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>
Я пришел сюда в поисках ответа, где я мог бы выделить определенные слова в textarea. Не нашел ответа в этой теме. Итак, добавив, как я это сделал:
для этого примера вы сделаете что-то вроде:
скачать и включить скрипты отсюда:http://garysieling.github.io/jquery-highlighttextarea/index.html
-
и так:
<script> $('textarea').highlightTextarea({ words: ['@twitter', '@twitpic'], id: 'demoCustom', caseSensitive: false // or a regular expression like -> words: ['@([^ ]+)'] }); </script> <style> #demoCustom mark { padding:0 3px; margin:-1px -4px; border-radius:0.5em; border:1px solid pink; } </style>
Больше Примеров: http://garysieling.github.io/jquery-highlighttextarea/examples.html