仅将输入文本限制为数字

时间:2014-04-15 17:02:29

标签: actionscript-3 flash

有没有办法只在输入文本字段中将文本限制为数字? 我尝试使用:

myInputText.restrict = "0-9";

但它没有效果。还有其他解决方案吗?

2 个答案:

答案 0 :(得分:2)

myInputText.restrict = "0-9\\-\\^\\\\";

试试这个,这应该有用。

答案 1 :(得分:0)

[编辑:下面介绍的方法是.restrict的替代方法,理论上可以实现更精细的控制。]

是的,你可以,很快。我们将结合使用正则表达式和事件监听器。

首先,您需要在文本框中设置事件侦听器。为了交谈,我将调用输入框txtInput。这将指向我们将编写的名为validate();

的函数

txtInput.addEventListener(KeyboardEvent.KEY_DOWN, validate);

现在,我们需要创建我们的功能。

function validate(evt:KeyboardEvent):void
{
    var currentString:String = txtInput.text;       //It is usually easier to work with the textInput contents as a string.
    var numbersRegex:RegExp = /^\d*$/;              //A regular expression accepting zero or more numbers ONLY.
    var invalidRegex:RegExp = /\D+/;                //A regular expression accepting one or more NON-numbers.

    if(numbersRegex.test(currentString) == false)   //Run the test. If it returns false...
    {
        currentString = currentString.replace(invalidRegex, "");    //Removes all non-numbers.
    }
    //Else, we do nothing.

    txtInput.text = currentString;                  //Put the updated string back into the input box.
}

(当然,该代码未经测试,但它应该或多或少有效。)

这里发生的逻辑:用户在框中输入一个字符。按下该键后,事件监听器将立即触发。如果字符串不是100%数字,则搜索字符串以查找所有非数字字符,并删除这些字符。

根据要求编辑:另外,请确保没有冲突的实例名称。如果您有两个具有相同名称的输入框,则Flash可能会查找错误的输入框。

如果有重复,

txtInput.text = "Sample text."会抛出编译器错误,或者在最坏的情况下,会显示您正在影响哪个输入框。