小程序
小游戏
企业微信
微信支付
扫描小程序码分享
这种,求解,怎么自动跳到下个input
3 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
<
view
>
class
=
"bind-content"
block
wx:for
"{{ inputLength }}"
wx:key
"index"
input
"bind-box__item"
type
"number"
value="{{ inputVal.length >= index + 1 ? inputVal[index] : '' }}" disabled catchtap="getFocus"></
</
name
"password"
"bind-box__cnt"
maxlength
focus
"{{ isFocus }}"
bindinput
"handleInput"
></
.bind-content {
display
: flex;
justify-
content
: space-around;
align-items:
center
;
margin-top
:
70
rpx;
margin-left
20px
margin-right
}
.bind-box__item {
width
60
height
80
font-size
24px
font-weight
bold
border-bottom
4
rpx
solid
#ddd
text-align
.bind-box__cnt {
0
data: {
inputLength: 6,
isFocus:
true
,
inputVal:
''
},
handleInput(e) {
let that =
this
, val = e.detail.value;
that.setData({
inputVal: val,
})
if (val.length === 6) {
if
(val.length === 6) {
console.log('输入完成')
getFocus() {
var
that =
不需要6个input,只需要一个正常输入的input,然后通过输入的长度,逐个重新渲染在其他view上就可以了。输入和展示分开的逻辑
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
为什么你这个没有光标
按照你这方法,光标在的输入框没办法给他上色啊
要实现光标道理也差不多,你是知道你当前输入的长度的,通过长度就可以知道当前位置了。判断下给个样式
去掉了,但是我点击一下input光标就出现0.0几s 就消失了
"bind-box__item {{inputVal.length === index ? 'active' : ''}}"
value="{{ inputVal.length >= index+1 ? inputVal[index] : '' }}" disabled catchtap="getFocus"></
给你个代码思路
改设计,这种设计差不多就是为设计而设计
bindinput 里 设置下一个框框的 focus
求例子,不是很懂 谢谢大哥
<input bindinput=
"inputFn"
focus=
"{{focusArray[0]}}"
></input>
"{{focusArray[1]}}"
"{{focusArray[2]}}"
"{{focusArray[3]}}"
.index = 0
inputFn(e){
(e.detail.value){
let focusArray = [
false
]
focusArray[++
.index] =
.setData({
focusArray:focusArray
写的不是很严谨,你要用的话还要加点东西,意会。。意会。。
这个输入完第一个会跳到第二个input,第二个会跳转到第二个input 第三和第四都是跳到第二个 0.0
你看看打印下 focusArray,是不是对的哎。。
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
<
view
>
<
view
class
=
"bind-content"
>
<
block
wx:for
=
"{{ inputLength }}"
wx:key
=
"index"
>
<
input
class
=
"bind-box__item"
type
=
"number"
value="{{ inputVal.length >= index + 1 ? inputVal[index] : '' }}" disabled catchtap="getFocus"></
input
>
</
block
>
</
view
>
<
input
name
=
"password"
type
=
"number"
class
=
"bind-box__cnt"
maxlength
=
"{{ inputLength }}"
focus
=
"{{ isFocus }}"
bindinput
=
"handleInput"
></
input
>
</
view
>
.bind-content {
display
: flex;
justify-
content
: space-around;
align-items:
center
;
margin-top
:
70
rpx;
margin-left
:
20px
;
margin-right
:
20px
;
}
.bind-box__item {
width
:
60
rpx;
height
:
80
rpx;
font-size
:
24px
;
font-weight
:
bold
;
border-bottom
:
4
rpx
solid
#ddd
;
display
: flex;
justify-
content
:
center
;
align-items:
center
;
text-align
:
center
;
}
.bind-box__cnt {
width
:
0
;
height
:
0
;
}
data: {
inputLength: 6,
isFocus:
true
,
inputVal:
''
},
handleInput(e) {
let that =
this
, val = e.detail.value;
that.setData({
inputVal: val,
})
if
(val.length === 6) {
console.log('输入完成')
}
},
getFocus() {
var
that =
this
;
that.setData({
isFocus:
true
,
})
}
不需要6个input,只需要一个正常输入的input,然后通过输入的长度,逐个重新渲染在其他view上就可以了。输入和展示分开的逻辑
为什么你这个没有光标
按照你这方法,光标在的输入框没办法给他上色啊
要实现光标道理也差不多,你是知道你当前输入的长度的,通过长度就可以知道当前位置了。判断下给个样式
去掉了,但是我点击一下input光标就出现0.0几s 就消失了
<
input
class
=
"bind-box__item {{inputVal.length === index ? 'active' : ''}}"
type
=
"number"
value="{{ inputVal.length >= index+1 ? inputVal[index] : '' }}" disabled catchtap="getFocus"></
input
>
给你个代码思路
改设计,这种设计差不多就是为设计而设计
bindinput 里 设置下一个框框的 focus
求例子,不是很懂 谢谢大哥
<input bindinput=
"inputFn"
focus=
"{{focusArray[0]}}"
></input>
<input bindinput=
"inputFn"
focus=
"{{focusArray[1]}}"
></input>
<input bindinput=
"inputFn"
focus=
"{{focusArray[2]}}"
></input>
<input bindinput=
"inputFn"
focus=
"{{focusArray[3]}}"
></input>
this
.index = 0
inputFn(e){
if
(e.detail.value){
let focusArray = [
false
,
false
,
false
,
false
]
focusArray[++
this
.index] =
true
this
.setData({
focusArray:focusArray
})
}
}
写的不是很严谨,你要用的话还要加点东西,意会。。意会。。
这个输入完第一个会跳到第二个input,第二个会跳转到第二个input 第三和第四都是跳到第二个 0.0
你看看打印下 focusArray,是不是对的哎。。