-
Flex:关于TextArea,如何响应用户输入文本的改变10
在TextArea中,如何响应用户输入文本的改变,如当用户输入一个字符时或删除一段文字(按delete)时,怎么响应该变化。
查Flex的Help,有change,datachange,但这些事件中,当调用到该TextArea的text属性时,text的值为改变前的值,而事件event中的text则只是新改变的值,如当插入文字时,则event.text为新插入的文字的值,但当新输入是delete时,即删除一段文字时,则在没有event函数的调用,请问,如何来捕捉用户输入的delete命令,以及如何来响应用户输入后产生的新的串?2009年1月03日 23:51
2个答案 按时间排序 按投票排序
-
采纳的答案
根据官网上的这个bug:http://bugs.adobe.com/jira/browse/SDK-15837,Flex 3里TextArea对delete似乎是没什么直接的支持,至少在delete的时候是不会发出textInput事件的。
要捕捉delete可以用TextArea的keyDown事件来监视delete键是否按下。不过似乎还有一种比较hacky的办法:在添加或修改文字的时候,TextArea总是先发出一个textInput事件然后发出一个change事件;而在删除文字(delete或者backspace之类)的时候,却没有textInput事件,直接发出了一个change事件。可以通过这个来判断是否是delete:private var isDelete : Boolean = true; public function onChange(evt : Event) : void { trace(evt.toString() + evt.target.toString()); if (isDelete) { trace("text deleted"); } isDelete = true; } public function onInput(evt : TextEvent) : void { trace(evt.toString() + evt.target.toString()); isDelete = false; }
分别把onChange和onInput接到某个TextArea的change和textInput事件上然后以debug模式启动程序,就可以看到在删除文字的时候会得到"text deleted"的trace。这个hack的要点是在textInput的handler中将isDelete设为false,然后在onChange中可以检查这个变量的状态,并在离开onChange之前重新将其设为true。2009年1月04日 08:27
-
像这样就能够得到被删除的内容(在onChange()中的deleteText):
import mx.controls.textClasses.TextRange; private var isDelete : Boolean = true; private var lastText : String = ''; public function onChange(evt : Event) : void { var ta : TextArea = evt.target as TextArea; var selection : TextRange = new TextRange(ta, true); if (isDelete) { var deletedTextIndex : Number = selection.beginIndex; var deletedTextLen : Number = lastText.length - ta.text.length; var deletedText : String = lastText.substring(deletedTextIndex, deletedTextIndex + deletedTextLen); trace("Text deleted: " + deletedText); } isDelete = true; lastText = ta.text; } public function onInput(evt : TextEvent) : void { isDelete = false; lastText = (evt.target as TextArea).text; }
TextArea当前没有选中任何内容时(或者说选中内容的长度为0时),在其上新建的TextRange的beginIndex和endIndex就会是一样的,都是当前光标所在的偏移量。上面的代码就是利用这个来得到被删除内容的位置。2009年1月04日 09:26
相关推荐
在Flex3中,`TextArea` 是一个常用的组件,用于显示多行可编辑的文本。当用户输入的内容增多时,为了提供良好的用户体验,我们通常希望`TextArea`的高度能够自适应地扩展,以显示所有内容,而无需滚动条或者内容被...
然后,我们为它添加了一个事件监听器,当文本改变时调用`onTextChanged`函数。在这个函数中,我们通过`split("\n")`方法将文本内容按行分割成数组,然后获取数组的最后一项,即最后一行文本。 对于TextField,虽然...
本篇文章将深入探讨Flex的基础知识,特别是关于控件的使用,包括基于文本的控件和基于按钮的控件。 首先,让我们关注基于文本的控件。在Flex中,这些控件主要用于显示和接收文本输入。Label控件是用于静态展示单行...
总的来说,这个"FLEX自动调整大小文本框控件"是FLEX应用中提高用户体验的一个重要工具,它体现了FLEX的灵活性和可扩展性,让开发者可以轻松地创建响应式且适应性强的文本输入区域。通过深入理解和运用这类组件,...
`TextEditor`可能包含一个`TextInput`或`TextArea`组件,用于用户输入文本,并可能有一些自定义的事件监听器和处理函数,用于处理如字体选择、颜色改变等编辑操作。 在描述中提到的`createBitmap`方法是一个关键点...
- 文本组件可以监听和响应各种事件,如文本改变、焦点变化等,这使得开发者可以轻松实现与用户的交互逻辑。 10. **数据绑定** - Flex4的强大的数据绑定功能使得文本组件的值可以与应用程序的数据模型直接关联,当...
5. **ActionScript编程**:对于更复杂的交互,可以使用ActionScript编写代码来控制富文本组件的行为,例如监听事件、改变文本格式或获取用户输入的富文本内容。 6. **数据绑定**:Flex支持数据绑定,这使得界面组件...
以上就是关于Flex使用中常见的一些问题和解决方案,包括改变验证控件样式、与HTML组件交互、禁用TextArea输入以及处理XML乱码问题。在实际开发中,遇到这些问题可以参考上述方法进行解决,同时也可加入相关交流群或...
例如,要创建一个按钮并添加到界面上,首先需要实例化按钮组件,然后通过设置其属性来定义按钮的样式和行为,接着添加事件监听器以响应用户操作,最后将按钮添加到父容器中,使其可见。 #### 工具提示 工具提示是...
- **TextArea**:与Text类似,也用于展示多行文本,不同之处在于它可以接收用户的输入。 - **TextInput**:仅用于接收用户的文本输入,一般用于展示单行文本。 - **RichTextEditor**:这是一种更强大的文本编辑器...
2. **TextInput**: 用于接收用户输入文本的字段,可配置多种属性,如是否允许多行输入、字符限制等。 3. **TextArea**: 类似于TextInput,但支持多行文本输入,常用于长文本编辑。 4. **Label**: 显示静态文本的组件...
- **TextArea**: 多行文本输入框组件。 - **TextInput**: 单行文本输入框组件。 #### Containers(容器组件) - **Application**: 应用程序主容器,通常作为Flex应用的根节点。 - **Accordion**: 可折叠的面板容器...
- **TextArea**: 可编辑文本区域。 **知识点17:设置可视显示样式** - **组件的css设定**: - 外部CSS文件。 - 内联样式。 - **组内定义CSS**: 在组件内部定义样式。 **知识点18:设置Spark组件外观** - **...
- **文本使用**:利用Label、TextArea等组件展示和编辑文本内容。 - **屏幕键盘支持**:根据输入类型自动弹出虚拟键盘。 - **字体嵌入**:可以将自定义字体文件打包到应用程序中,提高界面美观度。 - **HTML文本**:...
除了伪类选择器,CSS3还引入了`placeholder`属性,它可以在输入框内提供默认的提示文本,当用户开始输入时会自动消失。我们可以通过CSS调整占位符的样式: ```css input::placeholder { color: #999; font-style:...
常见的表单元素包括`<input>`(用于文本输入、密码输入、复选框、单选按钮等)、`<textarea>`(多行文本输入)、`<select>`(下拉菜单)和`<button>`(提交按钮)。 2. **CSS美化**: 使用CSS可以改变表单元素的...
4. `<textarea>`标签:提供多行文本输入区域。 5. `<label>`标签:为表单元素提供描述性文本,通过`for`属性关联到相应的输入元素,增强可访问性。 二、表单扩展标签 在HTML5中,引入了一些新的表单控件和属性,以...
HTML表单通过`<form>`标签定义,通常包括各种输入元素,如`<input>`(文本输入、密码输入、复选框、单选按钮等)、`<textarea>`(多行文本输入)、`<select>`(下拉菜单)和`<button>`(提交或重置按钮)。...
HTML提供了多种表单元素,如`<input>`(用于输入文本、密码、电子邮件等)、`<textarea>`(用于多行文本输入)、`<select>`(用于下拉选择)、`<option>`(用于下拉选项)、`<button>`(用于按钮)和`<label>`(用于...
1. 表单元素:如(文本输入、密码输入、按钮等)、(下拉列表)、<textarea>(多行文本输入)等。 2. 表单提交:标签,action属性指定处理表单数据的URL,method属性选择GET或POST提交方式。 3. 验证:使用...