Flex TextArea Сохранение фокуса / выделения при нажатии кнопки - PullRequest
2 голосов
/ 29 мая 2009

Мне интересно, как бы сохранить фокус / выделение на TextArea, даже если кнопка снаружи нажата.

Например, как это делает RichTextEditor.

Ответы [ 4 ]

0 голосов
/ 06 октября 2015

У меня была такая же проблема с простым текстовым полем. У меня есть кнопка, которая тянет выделенное значение и ajax отправляет его на сервер. Но когда фокус снят с кнопки, значение выделения window.getSelection().toString() остается пустым.

Мне удалось решить эту проблему, просто вернув фокус к текстовой области. Дешевое решение я знаю, но оно работает. Я использую jQuery, но, вероятно, не составит труда создать версию ванильного javascript.

$holder.on('click', '.name-add_option input', function(e)
{
  // Make sure the button doesn't do something silly like submit the form.
  e.preventDefault();

  // Set the focus to the text area I expect the highlighted text to be.
  $holder.find('.name-field textarea').focus();

  // Copy highlighted text.
  highlight = window.getSelection().toString();

  // Do stuff with highlighted data.
});

$holder - это дескриптор jquery для div, стилизованный как модальное окно в моем контексте.

0 голосов
/ 29 мая 2009

В обработчике события click вы захотите остановитьImmediatePropagation () и protectDefault (), а затем работать с выбором / фокусом.

0 голосов
/ 21 августа 2009

Похоже, что RichTextEditor выполняет свой поддерживающий фокус со следующей строкой в ​​setTextStyles():

callLater(textArea.setFocus)

Я думаю, что любое взаимодействие пользователя с элементами управления RTE будет проходить через этот метод, поэтому он возвращает фокус после завершения события управления.

0 голосов
/ 29 мая 2009
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical">
    <mx:TextArea id="textArea" focusOut="{textArea.setFocus()}" />
    <mx:Button id="test" label="Test" />
</mx:Application>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...