Actionscript 3 在更改时验证相同的值
您好,我在验证输入框中的相同值时遇到问题。调用的事件必须是输入框的“更改”值,但我对数字有问题。我想写例如“17”,但在之前的输入框中已经输入了值“1”之前,它会报告错误,因为在我们写17之前有“1”-7。所以我的问题是:是否有一个选项可以在避免此错误的同时检查此事件类型的相同值Actionscript 3 在更改时验证相同的值,actionscript-3,flash,pseudocode,Actionscript 3,Flash,Pseudocode,您好,我在验证输入框中的相同值时遇到问题。调用的事件必须是输入框的“更改”值,但我对数字有问题。我想写例如“17”,但在之前的输入框中已经输入了值“1”之前,它会报告错误,因为在我们写17之前有“1”-7。所以我的问题是:是否有一个选项可以在避免此错误的同时检查此事件类型的相同值 var textInput:Array = new Array(); for(var a:Number = 0;a < 2; a++){ textInput[a] = new TextField();
var textInput:Array = new Array();
for(var a:Number = 0;a < 2; a++){
textInput[a] = new TextField();
textInput[a].type = "input";
textInput[a].y = 10+20*a;
this.addChild(textInput[a]);
textInput[a].addEventListener(Event.CHANGE, changeListener);
}
function changeListener (e:Event):void {
if(Number(e.target.text)>22){
e.target.text = "0";
}
//problem area
else{
if(Number(textInput[1].text) == Number(textInput[0].text)){
e.target.text = "0";
}
}
}
var textInput:Array=new Array();
对于(变量a:Number=0;a<2;a++){
textInput[a]=新的TextField();
text输入[a]。type=“输入”;
textInput[a].y=10+20*a;
this.addChild(textInput[a]);
textInput[a].addEventListener(Event.CHANGE,changeListener);
}
函数changeListener(e:事件):void{
如果(数字(如目标文本)>22){
e、 target.text=“0”;
}
//问题领域
否则{
if(Number(textInput[1].text)=Number(textInput[0].text)){
e、 target.text=“0”;
}
}
}
有两个输入框的简单代码,但在我的项目中它更复杂。当第一个输入框中已经有“1”时,如何定义问题区域,使其有可能写出“17”。显然,你不能同时允许和禁止同一件事 您可以在
CHANGE
上验证字段,只将其标记为有效或无效(可能带有一些错误样式),在FOCUS\u OUT
上,如果文本无效,则重置文本
大概是这样的:
var valid:Boolean = true;
input.addEventListener(Event.CHANGE, validate);
input.addEventListener(FocusEvent.FOCUS_OUT, commit);
function validate(e:Event):void {
var input:TextField = e.currentTarget as TextField;
var value:Number = Number(input.text);
if(value > 22){
valid = true;
input.backgroundColor = 0xff0000; // error style
}else{
valid = false;
input.backgroundColor = 0xffffff; // normal style
}
}
function commit(e:FocusEvent):void {
if(!valid){
var input:TextField = e.currentTarget as TextField;
input.text = "0";
input.backgroundColor = 0xffffff; // normal style
}
}
另外,我建议您将这些内容封装在一个扩展
TextField
的类中。很难理解您的描述,这是非常模糊的。请添加到目前为止您所拥有的代码,以及它的行为方式。谢谢,这很有帮助。我不能完全理解你的解释。你能写下你想创造什么样的行为吗?你在描述你目前的解决方案有哪些问题,但你没有(至少对我)解释你最初的目标是什么。假设您有几个文本框,那么用户应该体验什么,应该发生什么?如果您很难解释,请制作一个屏幕截图。1)inputbox1=“1”2中的文本现在用户想在inputbox2中写:“11”,但他不能,因为如果有条件,请在输入“1”后将其值更改为“0”。如何在允许输入“11”时写入此条件。也许除了使用IF station还有其他方法。如果您不想将输入框设置回“0”,为什么有这样的代码?同样,不要解释你有什么问题,解释你最后想做什么。为什么你有这些文本框,为什么你想比较它们,这一切的意义是什么?很明显,您当前的解决方案不起作用,如果它起作用,您不会在这里寻求帮助。无需进一步说明当前解决方案,只需详细说明您尝试此解决方案的原因以及希望实现的功能。我必须检查22个输入框的更改值,可能有22(1..22)个唯一的数字值。更改后,我必须检查每个框中是否有唯一的值。若并没有,那个么触发事件的输入框将返回到“0”值。