我有一个TextField
,它允许用户输入时间,并且我已使用 RegValidator 进行验证。目前,我需要在用户单击退格键后立即用 "0" 填充特定位置。代码如下:
TextField {
id:textField
text:"11:11:11"
width:200
height:80
font.pointSize: 15
color:"white"
inputMask: "99:99:99"
validator: RegExpValidator { regExp: /^([0-1\s]?[0-9\s]|2[0-3\s]):([0-5\s][0-9\s]):([0-5\s][0-9\s])$ / }
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
inputMethodHints: Qt.ImhDigitsOnly
}
最佳答案
when user clicks on backspace
你的意思是只按退格键?那么它会是这样的:
TextField {
..
Keys.onBackPressed: text = "00:00:00"
}
编辑
为了仅重置光标所在的数字之一,您可以执行如下操作。我没有测试它,也许有些索引是错误的,但你明白了
TextField {
..
Keys.onBackPressed: {
var index = cursorPosition
var char = text.charAt(index)
if(char != ":"){
text = text.substr(0, index) + "0"+ text.substr(index);
}
}
}
http://doc.qt.io/qt-5/qml-qtquick-controls-textfield.html#cursorPosition-prop
关于regex - QML 中时间输入的文本字段验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47452800/