前言:最近在写uniapp小程序,遇到一个问题,在此记录一下,也希望能帮助到一些小伙伴。
问题:表单输入的时候,在个别 ios 真机上面测试时,快速输入和快速删除,会发现输入的文字或者数字,有自动删除、闪动、来回跳动等现象,经过查询各种资料,以及咨询官方得知,是 v-model 惹的祸, input(uni-easyinput同理)标签身上使用 v-model 会在部分真机上面出现以上现象,所以这里可以使用以下方法来代替 v-model。
1、只拿到输入的value值,不需要数据回显
(1)如果需要边输入边拿到数据,使用 @input(输入框内容发生变化时触发)
我这里使用的是uniapp自带的 uni-easyinput 表单(input同理)
<uni-easyinput type="number" placeholder="请输入卡号" @input="settleCardChange"/>
methods: {
settleCardChange(value){
console.log(value);
}
}
结果图:
(2)如果是输入完之后点击某个按钮提交的时候才需要用到value值,可以使用 @blur (输入框失去焦点时触发)来拿到 input 表单的值 (限制:不需要边输入边拿到数据)
<uni-easyinput type="number" placeholder="请输入卡号" @blur="getCardValue" />
methods:{
getCardValue(e){
console.log(e.detail.value);
},
}
结果图:
2、需要拿到value的值,并且需要数据回显
如果既需要拿到value值,又需要数据回显,就需要用到 :value 来使数据回显到输入框内,这里只能使用 @blur + :value 来实现,类似 v-model 双向绑定。(这里本人试过 @input + :value 来实现,依然有上述问题)
// 标签
<uni-easyinput type="number" :value="settleCardValue" placeholder="请输入卡号" :inputBorder="false" @blur="getCardValue"/>
// js
data() {
return {
settleCardValue:''
}
}
methods:{
getCardValue(e){
console.log(e.detail.value);
// 拿到value值后,赋值给 settleCardValue,以便后续使用
this.settleCardValue = e.detail.value
}
}
注:回显数据,我这边是后端返回的数据,我需要回显到 页面上,前端拿到值之后,直接赋值给 settleCardValue 即可。文章来源:https://www.toymoban.com/news/detail-675788.html
methods:{
// 商户信息回显
dispMerchantInfoApi(){
let obj = {
customerId: uni.getStorageSync('customerId')
}
getMySettleCard(obj).then(res => {
if (res.data.HEAD.CODE == '000') {
// res.data.BODY.account 后端返回的数据
// 直接赋值给 settleCardValue 即可
this.settleCardValue = res.data.BODY.account
}
})
}
}
结果图:
文章来源地址https://www.toymoban.com/news/detail-675788.html
到了这里,关于uniapp小程序,部分 ios 真机测试出现 input 输入框内容 跳动 问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!