有没有办法只在输入文本字段中将文本限制为数字? 我尝试使用:
myInputText.restrict = "0-9";
但它没有效果。还有其他解决方案吗?
答案 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."
会抛出编译器错误,或者在最坏的情况下,会显示您正在影响哪个输入框。