input.nvue 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245
  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. export default {
  110. data() {
  111. return {
  112. title: 'input',
  113. focus: false,
  114. inputValue: '',
  115. showClearIcon: false,
  116. inputClearValue: '',
  117. changeValue: '',
  118. showPassword: true,
  119. src: '../../../static/eye-1.png',
  120. platform: '',
  121. isNvue: false,
  122. }
  123. },
  124. methods: {
  125. onKeyInput: function(event) {
  126. this.inputValue = event.detail.value
  127. },
  128. replaceInput: function(event) {
  129. var value = event.detail.value;
  130. if (value === '11') {
  131. this.changeValue = '2';
  132. }
  133. },
  134. hideKeyboard: function(event) {
  135. if (event.detail.value === '123') {
  136. uni.hideKeyboard();
  137. }
  138. },
  139. clearInput: function(event) {
  140. this.inputClearValue = event.detail.value;
  141. if (event.detail.value.length > 0) {
  142. this.showClearIcon = true;
  143. } else {
  144. this.showClearIcon = false;
  145. }
  146. },
  147. clearIcon: function() {
  148. this.inputClearValue = '';
  149. this.showClearIcon = false;
  150. },
  151. changePassword: function() {
  152. this.showPassword = !this.showPassword;
  153. },
  154. onFocus() {
  155. this.$mp.page.$getAppWebview().setStyle({
  156. softinputNavBar: 'none'
  157. })
  158. },
  159. onBlur() {
  160. this.$mp.page.$getAppWebview().setStyle({
  161. softinputNavBar: 'auto'
  162. })
  163. }
  164. },
  165. onLoad() {
  166. this.platform = uni.getSystemInfoSync().platform
  167. // #ifdef APP-PLUS-NVUE
  168. this.isNvue = true
  169. // #endif
  170. }
  171. }
  172. </script>
  173. <style scoped>
  174. .nvue-page-root {
  175. background-color: #F8F8F8;
  176. padding-bottom: 20px;
  177. }
  178. .page-title {
  179. /* #ifndef APP-NVUE */
  180. display: flex;
  181. /* #endif */
  182. flex-direction: row;
  183. justify-content: center;
  184. align-items: center;
  185. padding: 35rpx;
  186. }
  187. .page-title__wrapper {
  188. padding: 0px 20px;
  189. border-bottom-color: #D8D8D8;
  190. border-bottom-width: 1px;
  191. }
  192. .page-title__text {
  193. font-size: 16px;
  194. height: 48px;
  195. line-height: 48px;
  196. color: #BEBEBE;
  197. }
  198. .title {
  199. padding: 5px 13px;
  200. }
  201. .uni-form-item__title {
  202. font-size: 16px;
  203. line-height: 24px;
  204. }
  205. .uni-input-wrapper {
  206. /* #ifndef APP-NVUE */
  207. display: flex;
  208. /* #endif */
  209. padding: 8px 13px;
  210. flex-direction: row;
  211. flex-wrap: nowrap;
  212. background-color: #FFFFFF;
  213. }
  214. .uni-input {
  215. height: 28px;
  216. line-height: 28px;
  217. font-size: 15px;
  218. padding: 0px;
  219. flex: 1;
  220. background-color: #FFFFFF;
  221. }
  222. .uni-icon {
  223. font-family: uniicons;
  224. font-size: 24px;
  225. font-weight: normal;
  226. font-style: normal;
  227. width: 24px;
  228. height: 24px;
  229. line-height: 24px;
  230. color: #999999;
  231. }
  232. .uni-eye-active {
  233. color: #007AFF;
  234. }
  235. </style>