我不想在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的两位或三位数字都应该被允许,你知道我该怎么做吗?
发布于 2018-04-01 12:55:24
那么只限制组合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);
}如果你最终会得到更复杂的限制模式,你可以通过检查n的th字符来使用.split构建更复杂的检查,等等:
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);
}
}https://stackoverflow.com/questions/49492335
复制相似问题