排除在TextField中键入的两个数字exaclty

时间:2018-03-26 13:12:08

标签: actionscript-3 flash actionscript

我想在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的两位或三位数字的数字应该是允许的,任何想法我怎么能做这个?

1 个答案:

答案 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);
        }
}