小程序
小游戏
企业微信
微信支付
扫描小程序码分享
就比如输入一个手机号 123456789 他会闪烁很多次 然后最终导致输入的内容不全
8 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
可以去掉setData,不使用啊。直接使用this.data.phone = e.detail.value进行赋值即可
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
我也遇到这个问题了。
我现在都没有办法理解value这个属性是干啥了。
我现在观察到的 value 属性和输入框中的显示是绑定的。但是又不是双向绑定,意思就是你不在bindInput方法里边去赋值,单纯的在输入框里打字,value属性里的值是不会改变的,只能通过bindInput方法赋值。
但是在bindInput方法里赋值,又会出现闪烁的问题。
我现在有一个需要点击输入框后边的一个 x 号,去清空输入框这个需求没法实现了。。。
我也是碰到了这个问题 请问现在有解决方法了吗?
界面上value绑定的默认值 然后bindinput事件输入数字或者输入其他 只要输入的太快了就会不停的跳动
setdata就是有这个问题,但是不用setdata又实现不了自己的业务
这个原因是我用了setData 重赋值 有没有解决办法
// 自定义 input Component({ data: { val: null, }, properties: { value: { type: String, observer(nval) { // if (nval !== this.data.val) { this.setData({ val: nval }) } }, }, type: { type: String, }, placeholder: { type: String, }, }, methods: { handleInput(e: WechatMiniprogram.TouchEvent) { const { value } = e.detail this.data.val = value this.triggerEvent('input', e) }, }, })
在input中去掉传入值, 让它变成非受控组件
<Input placeholder="placeholder" className="search" // value={inputValue}. => 去掉这一行 type="text" onInput={this.onKeyWordInput} ></Input> setData正常用,这样你也可以实现业务的同时也能正常显示
这种情况可能是由于在快速输入数字时,bindinput 事件触发的频率太高,导致页面渲染速度跟不上输入速度,从而导致数字跳闪。加一个定时器就行了。
bindinput
timer: null,
driverPhoneInput: function (e) {
clearTimeout(this.timer);
this.timer = setTimeout(() => {
this.setData({
driverPhone: e.detail.value
});
}, 500);
},
可以尝试使用简易双向绑定
https://developers.weixin.qq.com/miniprogram/dev/framework/view/two-way-bindings.html
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
可以去掉setData,不使用啊。直接使用this.data.phone = e.detail.value进行赋值即可
我也遇到这个问题了。
我现在都没有办法理解value这个属性是干啥了。
我现在观察到的 value 属性和输入框中的显示是绑定的。但是又不是双向绑定,意思就是你不在bindInput方法里边去赋值,单纯的在输入框里打字,value属性里的值是不会改变的,只能通过bindInput方法赋值。
但是在bindInput方法里赋值,又会出现闪烁的问题。
我现在有一个需要点击输入框后边的一个 x 号,去清空输入框这个需求没法实现了。。。
我也是碰到了这个问题 请问现在有解决方法了吗?
界面上value绑定的默认值 然后bindinput事件输入数字或者输入其他 只要输入的太快了就会不停的跳动
setdata就是有这个问题,但是不用setdata又实现不了自己的业务
这个原因是我用了setData 重赋值 有没有解决办法
// 自定义 input Component({ data: { val: null, }, properties: { value: { type: String, observer(nval) { // if (nval !== this.data.val) { this.setData({ val: nval }) } }, }, type: { type: String, }, placeholder: { type: String, }, }, methods: { handleInput(e: WechatMiniprogram.TouchEvent) { const { value } = e.detail this.data.val = value this.triggerEvent('input', e) }, }, })
在input中去掉传入值, 让它变成非受控组件
<Input placeholder="placeholder" className="search" // value={inputValue}. => 去掉这一行 type="text" onInput={this.onKeyWordInput} ></Input> setData正常用,这样你也可以实现业务的同时也能正常显示
这种情况可能是由于在快速输入数字时,
bindinput
事件触发的频率太高,导致页面渲染速度跟不上输入速度,从而导致数字跳闪。加一个定时器就行了。timer: null,
driverPhoneInput: function (e) {
clearTimeout(this.timer);
this.timer = setTimeout(() => {
this.setData({
driverPhone: e.detail.value
});
}, 500);
},
可以尝试使用简易双向绑定
https://developers.weixin.qq.com/miniprogram/dev/framework/view/two-way-bindings.html