input.nvue 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249
  1. <template>
  2. <view class="nvue-page-root">
  3. <view class="page-title">
  4. <view class="page-title__wrapper">
  5. <text class="page-title__text">{{title}}</text>
  6. </view>
  7. </view>
  8. <view class="uni-common-mt">
  9. <view class="uni-form-item uni-column">
  10. <view class="title"><text class="uni-form-item__title">可自动聚焦的 input</text></view>
  11. <view class="uni-input-wrapper">
  12. <input class="uni-input" focus placeholder="自动获得焦点" />
  13. </view>
  14. </view>
  15. <!-- #ifdef APP-PLUS -->
  16. <view v-if="platform==='ios'&&!isNvue" class="uni-form-item uni-column">
  17. <view class="title"><text class="uni-form-item__title">隐藏 iOS 软键盘上的导航条</text></view>
  18. <view class="uni-input-wrapper">
  19. <input class="uni-input" placeholder="触摸其他地方收起键盘" @focus="onFocus" @blur="onBlur" />
  20. </view>
  21. </view>
  22. <!-- #endif -->
  23. <view class="uni-form-item uni-column">
  24. <view class="title"><text class="uni-form-item__title">键盘右下角按钮显示为搜索</text></view>
  25. <view class="uni-input-wrapper">
  26. <input class="uni-input" confirm-type="search" placeholder="键盘右下角按钮显示为搜索" />
  27. </view>
  28. </view>
  29. <!-- #ifndef H5 -->
  30. <view class="uni-form-item uni-column">
  31. <view class="title"><text class="uni-form-item__title">键盘右下角按钮显示为发送</text></view>
  32. <view class="uni-input-wrapper">
  33. <input class="uni-input" confirm-type="send" placeholder="键盘右下角按钮显示为发送" />
  34. </view>
  35. </view>
  36. <!-- #endif -->
  37. <view class="uni-form-item uni-column">
  38. <view class="title"><text class="uni-form-item__title">控制最大输入长度的 input</text></view>
  39. <view class="uni-input-wrapper">
  40. <input class="uni-input" maxlength="10" placeholder="最大输入长度为10" />
  41. </view>
  42. </view>
  43. <view class="uni-form-item uni-column">
  44. <view class="title"><text class="uni-form-item__title">实时获取输入值:{{inputValue}}</text></view>
  45. <view class="uni-input-wrapper">
  46. <input class="uni-input" @input="onKeyInput" placeholder="输入同步到view中" />
  47. </view>
  48. </view>
  49. <view class="uni-form-item uni-column">
  50. <view class="title"><text class="uni-form-item__title">控制输入的 input</text></view>
  51. <view class="uni-input-wrapper">
  52. <input class="uni-input" @input="replaceInput" v-model="changeValue" placeholder="连续的两个1会变成2" />
  53. </view>
  54. </view>
  55. <!-- #ifndef MP-BAIDU -->
  56. <view class="uni-form-item uni-column">
  57. <view class="title"><text class="uni-form-item__title">控制键盘的 input</text></view>
  58. <view class="uni-input-wrapper">
  59. <input class="uni-input" ref="input1" @input="hideKeyboard" placeholder="输入123自动收起键盘" />
  60. </view>
  61. </view>
  62. <!-- #endif -->
  63. <view class="uni-form-item uni-column">
  64. <view class="title"><text class="uni-form-item__title">数字输入的 input</text></view>
  65. <view class="uni-input-wrapper">
  66. <input class="uni-input" type="number" placeholder="这是一个数字输入框" />
  67. </view>
  68. </view>
  69. <view class="uni-form-item uni-column">
  70. <view class="title"><text class="uni-form-item__title">密码输入的 input</text></view>
  71. <view class="uni-input-wrapper">
  72. <input class="uni-input" password type="text" placeholder="这是一个密码输入框" />
  73. </view>
  74. </view>
  75. <view class="uni-form-item uni-column">
  76. <view class="title"><text class="uni-form-item__title">带小数点的 input</text></view>
  77. <view class="uni-input-wrapper">
  78. <input class="uni-input" type="digit" placeholder="带小数点的数字键盘" /> </view>
  79. </view>
  80. <view class="uni-form-item uni-column">
  81. <view class="title"><text class="uni-form-item__title">身份证输入的 input</text></view>
  82. <view class="uni-input-wrapper">
  83. <input class="uni-input" type="idcard" placeholder="身份证输入键盘" /> </view>
  84. </view>
  85. <view class="uni-form-item uni-column">
  86. <view class="title"><text class="uni-form-item__title">控制占位符颜色的 input</text></view>
  87. <view class="uni-input-wrapper">
  88. <input class="uni-input" placeholder-style="color:#F76260" placeholder="占位符字体是红色的" />
  89. </view>
  90. </view>
  91. <view class="uni-form-item uni-column">
  92. <view class="title"><text class="uni-form-item__title">带清除按钮的输入框</text></view>
  93. <view class="uni-input-wrapper">
  94. <input class="uni-input" placeholder="带清除按钮的输入框" :value="inputClearValue" @input="clearInput" />
  95. <text class="uni-icon" v-if="showClearIcon" @click="clearIcon">&#xe434;</text>
  96. </view>
  97. </view>
  98. <view class="uni-form-item uni-column">
  99. <view class="title"><text class="uni-form-item__title">可查看密码的输入框</text></view>
  100. <view class="uni-input-wrapper">
  101. <input class="uni-input" placeholder="请输入密码" :password="showPassword" />
  102. <text class="uni-icon" :class="[!showPassword ? 'uni-eye-active' : '']" @click="changePassword">&#xe568;</text>
  103. </view>
  104. </view>
  105. </view>
  106. </view>
  107. </template>
  108. <script>
  109. import pageHead from '@/components/page-head.vue'
  110. export default {
  111. components: {
  112. pageHead
  113. },
  114. data() {
  115. return {
  116. title: 'input',
  117. focus: false,
  118. inputValue: '',
  119. showClearIcon: false,
  120. inputClearValue: '',
  121. changeValue: '',
  122. showPassword: true,
  123. src: '../../../static/eye-1.png',
  124. platform: '',
  125. isNvue: false,
  126. }
  127. },
  128. methods: {
  129. onKeyInput: function(event) {
  130. this.inputValue = event.detail.value
  131. },
  132. replaceInput: function(event) {
  133. var value = event.detail.value;
  134. if (value === '11') {
  135. this.changeValue = '2';
  136. }
  137. },
  138. hideKeyboard: function(event) {
  139. if (event.detail.value === '123') {
  140. uni.hideKeyboard();
  141. }
  142. },
  143. clearInput: function(event) {
  144. this.inputClearValue = event.detail.value;
  145. if (event.detail.value.length > 0) {
  146. this.showClearIcon = true;
  147. } else {
  148. this.showClearIcon = false;
  149. }
  150. },
  151. clearIcon: function() {
  152. this.inputClearValue = '';
  153. this.showClearIcon = false;
  154. },
  155. changePassword: function() {
  156. this.showPassword = !this.showPassword;
  157. },
  158. onFocus() {
  159. this.$mp.page.$getAppWebview().setStyle({
  160. softinputNavBar: 'none'
  161. })
  162. },
  163. onBlur() {
  164. this.$mp.page.$getAppWebview().setStyle({
  165. softinputNavBar: 'auto'
  166. })
  167. }
  168. },
  169. onLoad() {
  170. this.platform = uni.getSystemInfoSync().platform
  171. // #ifdef APP-PLUS-NVUE
  172. this.isNvue = true
  173. // #endif
  174. }
  175. }
  176. </script>
  177. <style scoped>
  178. .nvue-page-root {
  179. background-color: #F8F8F8;
  180. padding-bottom: 20px;
  181. }
  182. .page-title {
  183. /* #ifndef APP-NVUE */
  184. display: flex;
  185. /* #endif */
  186. flex-direction: row;
  187. justify-content: center;
  188. align-items: center;
  189. padding: 35rpx;
  190. }
  191. .page-title__wrapper {
  192. padding: 0px 20px;
  193. border-bottom-color: #D8D8D8;
  194. border-bottom-width: 1px;
  195. }
  196. .page-title__text {
  197. font-size: 16px;
  198. height: 48px;
  199. line-height: 48px;
  200. color: #BEBEBE;
  201. }
  202. .title {
  203. padding: 5px 13px;
  204. }
  205. .uni-form-item__title {
  206. font-size: 16px;
  207. line-height: 24px;
  208. }
  209. .uni-input-wrapper {
  210. /* #ifndef APP-NVUE */
  211. display: flex;
  212. /* #endif */
  213. padding: 8px 13px;
  214. flex-direction: row;
  215. flex-wrap: nowrap;
  216. background-color: #FFFFFF;
  217. }
  218. .uni-input {
  219. height: 28px;
  220. line-height: 28px;
  221. font-size: 15px;
  222. padding: 0px;
  223. flex: 1;
  224. background-color: #FFFFFF;
  225. }
  226. .uni-icon {
  227. font-family: uniicons;
  228. font-size: 24px;
  229. font-weight: normal;
  230. font-style: normal;
  231. width: 24px;
  232. height: 24px;
  233. line-height: 24px;
  234. color: #999999;
  235. }
  236. .uni-eye-active {
  237. color: #007AFF;
  238. }
  239. </style>