<textarea>

简介

<textarea><input> 组件类似,可用于接受用户输入数据。<textarea> 支持多行文本输入。 <textarea> 支持 <input> 支持的所有的属性、样式和事件。

子组件

<textarea> 不支持子组件。

属性

除了支持 input 支持的所有属性外,textarea 还支持 rows 属性,用于指定输入的行数。

  • rows, number, 默认值为2。

样式

通用样式

伪类样式

  • active
  • disabled
  • enbaled
  • focus

activefocus 的区别在于,当光标位于输入框里时,它就是 focus 状态,而只有触摸输入框时它才是 active 的状态。

文本样式

事件

  • 通用事件 支持所有通用事件
  • input. 当输入状态时,会不断触发。
    • @param value: 当前文本。
  • change. 当用户完成了输入时触发。
    • @param value: 当前文本。
  • focus. 当输入框获得焦点时触发。
  • blur. 当输入框失去焦点时触发。
  • return. 当用户点击了“回车”按钮时触发,会返回此时“回车”按钮的动作类型。
    • @param value: 当前文本。
    • @param returnKeyType, “default” | “go” | “next” | “search” | “send” | “done”.
  • keyboard. 当键盘弹起或收起时触发。
    • @param isShow: boolean, 显示或隐藏键盘。
    • @param keyboardSize: 键盘的高度,以前端使用的样式单位返回。

Vue 示例

  1. <template>
  2. <div class="wrapper">
  3. <textarea class="textarea" @input="oninput" @change="onchange" @focus="onfocus" @blur="onblur"></textarea>
  4. </div>
  5. </template>
  6. <script>
  7. const modal = weex.requireModule('modal')
  8. export default {
  9. methods: {
  10. oninput (event) {
  11. console.log('oninput:', event.value)
  12. modal.toast({
  13. message: `oninput: ${event.value}`,
  14. duration: 0.8
  15. })
  16. },
  17. onchange (event) {
  18. console.log('onchange:', event.value)
  19. modal.toast({
  20. message: `onchange: ${event.value}`,
  21. duration: 0.8
  22. })
  23. },
  24. onfocus (event) {
  25. console.log('onfocus:', event.value)
  26. modal.toast({
  27. message: `onfocus: ${event.value}`,
  28. duration: 0.8
  29. })
  30. },
  31. onblur (event) {
  32. console.log('onblur:', event.value)
  33. modal.toast({
  34. message: `input blur: ${event.value}`,
  35. duration: 0.8
  36. })
  37. }
  38. }
  39. }
  40. </script>
  41. <style>
  42. .textarea {
  43. font-size: 50px;
  44. width: 650px;
  45. margin-top: 50px;
  46. margin-left: 50px;
  47. padding-top: 20px;
  48. padding-bottom: 20px;
  49. padding-left: 20px;
  50. padding-right: 20px;
  51. color: #666666;
  52. border-width: 2px;
  53. border-style: solid;
  54. border-color: #41B883;
  55. }
  56. </style>

Rax 示例

rax-textinput<textarea> 组件的上层封装,抹平了 Web 和 Weex 的展现

  1. import { createElement, render } from "rax";
  2. import Driver from 'driver-universal';
  3. import TextInput from "rax-textinput";
  4. function App() {
  5. return (
  6. <View style={{margin: '20rpx'}}>
  7. <TextInput
  8. multiline={true}
  9. numberOfLines={3}
  10. style={{
  11. height: '150rpx',
  12. width: '600rpx',
  13. borderWidth: '1rpx',
  14. borderColor: '#dddddd',
  15. borderStyle: 'solid'
  16. }}
  17. />
  18. </View>
  19. );
  20. }
  21. render(<App />, document.body, { driver: Driver });

rax-textinput 文档