Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Как выделить текст в формк? (https://javascript.ru/forum/events/43762-kak-vydelit-tekst-v-formk.html)

Valentin555 19.12.2013 18:09

Как выделить текст в формк?
 
Необходимо сделать выделение участка текста который определяется регулярным выражением. Как это сделать?
Спасибо.

danik.js 19.12.2013 18:48

<!DOCTYPE html>
<textarea>сделать выделение участка текста</textarea>
<script>
    var textarea = document.querySelector('textarea');
    var pattern = /выделени[а-я]/i;
    var match = textarea.value.match(pattern);
    if (match) {
        textarea.selectionStart = match.index;
        textarea.selectionEnd = match.index + match[0].length;
    }
</script>

Valentin555 20.12.2013 01:05

Спасибо danik.js, но я вот повесил эту функцию но событие загрузки страницы и почему-то не срабатывает.
что я сделал не так?

<!DOCTYPE html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script type="text/javascript">
function selector2() {
    var textarea = document.querySelector('textarea');
    var pattern = /выделени[а-я]/i;
    var match = textarea.value.match(pattern);
    if (match) {
        textarea.selectionStart = match.index;
        textarea.selectionEnd = match.index + match[0].length;
    }
}
</script>
</head>
<body>
<body onLoad="selector2();">
<textarea>сделать выделение участка текста</textarea>
</body>
</html>

рони 20.12.2013 01:12

Valentin555,
а body у вас немноговато? а html?

Valentin555 20.12.2013 01:34

Извините господа ) не тот кусок скопировал. но результат не поменялся, То есть, нужна функция, которая бы при вызове выделяла часть текста по регулярке, вот для тестирования повесил ее на онлоад, но не работает...
не могу понять причину...

<!DOCTYPE html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script type="text/javascript">
function selector2() {
    var textarea = document.querySelector('textarea');
    var pattern = /выделени[а-я]/i;
    var match = textarea.value.match(pattern);
    if (match) {
        textarea.selectionStart = match.index;
        textarea.selectionEnd = match.index + match[0].length;
    }
}
</script>
</head>
<body onLoad="selector2();">
<textarea>сделать выделение участка текста</textarea>
</body>
</html>

рони 20.12.2013 01:37

Valentin555, дружите с тегами и всё получится
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script type="text/javascript">
function selector2() {
    var textarea = document.querySelector('textarea');
    var pattern = /выделени[а-я]/i;
    var match = textarea.value.match(pattern);
    if (match) {
        textarea.selectionStart = match.index;
        textarea.selectionEnd = match.index + match[0].length;
    };
textarea.focus()
}
</script>
</head>
<body onLoad="selector2();">
<textarea>сделать выделение участка текста</textarea>
</body>
</html>

Valentin555 20.12.2013 01:39

Так, может торможу просто.. что не так? только без обид! )

Valentin555 20.12.2013 01:43

Это почему-то в мозилле не работало... в опере сработало... попробую обновить мозиллу...
или не сработало в ней по другим причинам?

рони 20.12.2013 01:50

Valentin555,
причина указана в 4 посте --- или в 6 посте смотрите на строку 2 и мидитируйте

Valentin555 20.12.2013 01:53

В Хроме и опере работает! В Firefox - не работает!
Не подскажите что ему еще нехватает? :)

рони 20.12.2013 01:58

Valentin555,
фокуса не хватает - это без шуток )))

рони 20.12.2013 02:01

Valentin555,
добавил фокус в 6 пост -- смотрите

danik.js 20.12.2013 05:58

рони, что <html>, что <head>, что <body> - не являются обязательными тегами. Их можно смело опустить. Знающие это люди пишут эти тэги только из соображений удобства. И их отсутствие не может что-либо сломать (разве что возможность прописать атрибуты). Если хотите знать, это 100% корректный и валидный HTML-документ:
<!DOCTYPE html>
<title>The Title</title>


И нет смысла ставить обработчик в атрибут onload. Почему бы просто не написать:
window.onload = function() {
    // код
};


Однако лучше и вовсе обойтись без этого и просто опустить скрипт в конец документа ( как у меня в примере)

рони 20.12.2013 09:59

danik.js, вы для меня кладезь знаний :write:
ваша информация будет полезной для Valentin555, но
если писать теги то писать их надо правильно, иначе браузер подкорректирует на свой лад и код лучше писать кросбраузерно а не только для хрома.

Valentin555 05.01.2014 18:49

рони, danik.js спасибо огромное, помогли очень! все работает! Ребята, поздравляю Вас особенно, и всех участников форума с праздниками! желаю все самого позитивного!
П.С.
посоветуйте литературу, чтоб я понял откуда это все взялось и как делается. скачал себе по яваскрипт книгу (подробно руководство) но там этого нет. В общем посоветуйте литературу хорошую вообще по языку и конкретно по затронутой теме.
Еще раз большое спасибо!


Часовой пояс GMT +3, время: 02:48.