我想在TextField中输入两个数字“3和4”,我试过:
var theTextField:TextField = new TextField();
theTextField.type = TextFieldType.INPUT;
theTextField.border = true;
theTextField.x = 10;
theTextField.y = 10;
addChild(theTextField);
theTextField.restrict="0-9^3-4";
这成功地排除了3& 4,在文本字段中键入,但它也阻止您输入33或45,例如,我只想排除3和4.任何允许包含3或4的两位或三位数字的数字应该是允许的,任何想法我怎么能做这个?
答案 0 :(得分:0)
那么仅限制组合34和43?
与Organis评论一样,您应该通过Event.CHANGE
验证输入,如果您还没有让用户了解限制,请显示某人的警告。
在验证功能中,您可以检查输入文本是否为" 34"或" 43"然后从中删除第二个字符以模拟实际限制:
theTextField.addEventListener(Event.CHANGE, validateInput);
function validateInput(e:Event):void{
if(e.target.text == "34" || e.target.text == "43"){
e.target.text = e.target.text.split("")[0];
}
}
您还可以使用RegExp检查匹配项,并在函数内使用.slice
而不是.split
:
var pattern:RegExp = /^[34|43]{2}$/;
if(pattern.test(e.target.text)){
e.target.text = e.target.text.slice(0,-1);
}
如果您最终会遇到更复杂的限制模式,使用.split
,您可以通过检查n
字符等来构建更复杂的检查:
if(e.target.text.length == 2){
if((e.target.text.split("")[0] == "3" && e.target.text.split("")[1] == "4") ||
(e.target.text.split("")[0] == "4" && e.target.text.split("")[1] == "3")){
e.target.text = e.target.text.slice(0,-1);
}
}