去除fixed
、showWordLimit
、showConfirmBar
、disableDefaultPadding
、autosize
字段
此组件为一个输入框,默认没有边框和样式,是专门为配合表单组件u-form而设计的,利用它可以快速实现表单验证,输入内容,下拉选择等功能。
应该在u-form
中嵌套u-form-item
,再嵌套u-input
去实现。
注意:
由于在nvue
下,u-input
名称被uni-app官方占用,在nvue
页面中请使用u--input
名称,在vue
页面中使用u--input
或者u-input
均可。
App(vue) | App(nvue) | H5 | 小程序 |
---|---|---|---|
√ | √ | √ | √ |
type
设置输入框的类型,默认textplaceholder
设置输入框为空时的占位符border
配置是否显示输入框的边框@change
事件<template>
<u--input
placeholder="请输入内容"
border="surround"
v-model="value"
@change="change"
></u--input>
</template>
<script>
export default {
data() {
return {
value: ''
}
},
methods: {
change(e) {
console.log('change', e);
}
}
}
</script>
copy
综述:输入框的类型可通过配置type
来设置:
password
为true
的效果将clearable
设置为true
,会在输入框后方增加一个清空按钮。
<template>
<u--input
placeholder="请输入内容"
border="surround"
clearable
></u--input>
</template>
copy
通过设置属性border
为bottom
即可变成一个下划线
<template>
<u--input
placeholder="请输入内容"
border="bottom"
clearable
></u--input>
</template>
copy
<template>
<u--input
placeholder="前置图标"
prefixIcon="search"
prefixIconStyle="font-size: 22px;color: #909399"
></u--input>
<u--input
placeholder="后置图标"
suffixIcon="map-fill"
suffixIconStyle="color: #909399"
></u--input>
</template>
<script>
</script>
copy
通过设置slot
为prefix
或suffix
来指定前后插槽
<template>
<view class="u-demo-block">
<text class="u-demo-block__title">前后插槽</text>
<view class="u-demo-block__content">
<!-- 注意:由于兼容性差异,如果需要使用前后插槽,nvue下需使用u--input,非nvue下需使用u-input -->
<!-- #ifndef APP-NVUE -->
<u-input placeholder="前置插槽">
<!-- #endif -->
<!-- #ifdef APP-NVUE -->
<u--input placeholder="前置插槽">
<!-- #endif -->
<u--text
text="http://"
slot="prefix"
margin="0 3px 0 0"
type="tips"
></u--text>
<!-- #ifndef APP-NVUE -->
</u-input>
<!-- #endif -->
<!-- #ifdef APP-NVUE -->
</u--input>
<!-- #endif -->
</view>
<view
class="u-demo-block__content"
style="margin-top: 15px;"
>
<!-- 注意:由于兼容性差异,如果需要使用前后插槽,nvue下需使用u--input,非nvue下需使用u-input -->
<!-- #ifndef APP-NVUE -->
<u-input placeholder="后置插槽">
<!-- #endif -->
<!-- #ifdef APP-NVUE -->
<u--input placeholder="后置插槽">
<!-- #endif -->
<template slot="suffix">
<u-code
ref="uCode"
@change="codeChange"
seconds="20"
changeText="X秒重新获取哈哈哈"
></u-code>
<u-button
@tap="getCode"
:text="tips"
type="success"
size="mini"
></u-button>
</template>
<!-- #ifndef APP-NVUE -->
</u-input>
<!-- #endif -->
<!-- #ifdef APP-NVUE -->
</u--input>
<!-- #endif -->
</view>
</view>
</template>
<script>
export default {
data() {
return {
tips: '',
value: ''
}
},
watch: {
value(newValue, oldValue) {
// console.log('v-model', newValue);
}
},
methods: {
codeChange(text) {
this.tips = text;
},
getCode() {
if (this.$refs.uCode.canGetCode) {
// 模拟向后端请求验证码
uni.showLoading({
title: '正在获取验证码'
})
setTimeout(() => {
uni.hideLoading();
// 这里此提示会被this.start()方法中的提示覆盖
uni.$u.toast('验证码已发送');
// 通知验证码组件内部开始倒计时
this.$refs.uCode.start();
}, 2000);
} else {
uni.$u.toast('倒计时结束后再发送');
}
},
change(e) {
console.log('change', e);
}
}
}
</script>