index.js 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. // input/input.js
  2. import rules from '../behaviors/rules';
  3. Component({
  4. /**
  5. * 组件的属性列表
  6. */
  7. options: {
  8. multipleSlots: true,
  9. },
  10. behaviors: ['wx://form-field', rules],
  11. externalClasses: ['l-class', 'l-label-class','l-error-text'],
  12. properties: {
  13. // 表单标题(label)的文本
  14. label: {
  15. type: String,
  16. value: ''
  17. },
  18. // 是否自定义label部分
  19. labelCustom: {
  20. type: Boolean,
  21. value: false
  22. },
  23. // 是否必选
  24. required: {
  25. type: Boolean,
  26. value: false
  27. },
  28. // 占位文本
  29. placeholder: {
  30. type: String,
  31. value: ''
  32. },
  33. // 输入框类型
  34. type: {
  35. type: String,
  36. value: 'text'
  37. },
  38. // 输入框的值
  39. value: {
  40. type: String,
  41. value: ''
  42. },
  43. // 是否需要冒号
  44. colon: {
  45. type: Boolean,
  46. value: false
  47. },
  48. // 获取焦点
  49. focus: {
  50. type: Boolean,
  51. value: false
  52. },
  53. // 是否显示清除按钮
  54. clear: {
  55. type: Boolean,
  56. value: false
  57. },
  58. // 最大输入长度
  59. maxlength: {
  60. type: Number,
  61. value: 140
  62. },
  63. // 表单项的宽度,单位rpx
  64. width: {
  65. type: Number,
  66. value: 750
  67. },
  68. // 表单项标题部分的宽度,单位rpx
  69. labelWidth: {
  70. type: Number,
  71. value: 200
  72. },
  73. // label标题的显示位置 left top right
  74. labelLayout: {
  75. type: String,
  76. value: 'left'
  77. },
  78. // 是否禁用
  79. disabled: {
  80. type: Boolean,
  81. value: false
  82. },
  83. // 占位文字的样式
  84. placeholderStyle: {
  85. type: String,
  86. value: ''
  87. },
  88. },
  89. /**
  90. * 组件的初始数据
  91. */
  92. data: {
  93. },
  94. attached() {
  95. this.initRules();
  96. },
  97. /**
  98. * 组件的方法列表
  99. */
  100. methods: {
  101. handleInputChange(event) {
  102. const {
  103. detail = {}
  104. } = event;
  105. const {
  106. value = ''
  107. } = detail;
  108. this.setData({
  109. value
  110. });
  111. this.triggerEvent('linchange', event);
  112. },
  113. handleInputFocus(event) {
  114. this.triggerEvent('linfocus', event);
  115. },
  116. handleInputBlur(event) {
  117. this.validatorData({
  118. value: event.detail.value
  119. });
  120. this.triggerEvent('linblur', event);
  121. },
  122. handleInputConfirm(event) {
  123. const {
  124. detail = {}
  125. } = event;
  126. const {
  127. value = ''
  128. } = detail;
  129. this.setData({
  130. value
  131. });
  132. this.triggerEvent('linconfirm', event);
  133. },
  134. onClearTap(event) {
  135. this.setData({
  136. value: ''
  137. })
  138. this.triggerEvent('linclear', event);
  139. },
  140. }
  141. })