如何在 actionscript 3 中检查 mm/dd/yyyy 的正确自定义输入?

Posted

技术标签:

【中文标题】如何在 actionscript 3 中检查 mm/dd/yyyy 的正确自定义输入?【英文标题】:How would I check for a proper custom input of mm/dd/yyyy in actionscript 3? 【发布时间】:2017-05-04 21:21:50 【问题描述】:

我有一个带有 editable="true" 的 DataField,格式为 mm/dd/yyyy。然后假设用户输入月份mm 部分13 这是不正确的。如何验证它以及 dd 部分和 yyyy 部分并在不正确时显示一个弹出窗口?

这是单击apply 按钮时发生的情况:

var newDate:Date = dfDate.selectedDate;
var month:String = (newDate.month + 1) < 10 ? "0" + (newDate.month + 1).toString() : (newDate.month + 1).toString();
var date:String = newDate.date < 10 ? "0" + newDate.date.toString() : newDate.date.toString();
var year:Number = newDate.getFullYear();
var dateString:String = month + "/" + date + "/" + year;

按钮部分:

<mx:FormItem id="itemDate">
    <mx:DateField id="dfDate" yearNavigationEnabled="true" editable="true"/>
</mx:FormItem>

【问题讨论】:

您可以在 FocusOut 事件中编写逻辑。 好的会尝试,但是你知道有没有更通用的方法来做到这一点? 可能重复,看这里***.com/questions/5009106/… 谢谢大家,其实我已经知道答案了,如果我没有勾选“回答你自己的问题”复选框,你知道我该如何回答我自己的问题吗? 在 focusout 事件中,您可以检查 dfDate.selectedDate 是否为空,则日期无效。这是对其有效性的简单检查。 【参考方案1】:

你可以只使用一个简单的正则表达式

var customRegExp:RegExp = new RegExp(/(0[1-9]|1[012])[\/](0[1-9]|[12][0-9]|3[01])[\/](19|20)\d\d/);

然后使用.test 函数和一些格式化的东西

var fmt:DateFormatter = new DateFormatter();
fmt.formatString = "MM/DD/YYYY";

if(!customRegExp.test(fmt.format(dfDate.selectedDate)))

    Alert.show("Please input date in format MM/DD/YYYY");
    enableForm(true);

为我工作得很好,我认为也可以为其他人工作!

下面是代码:

var customRegExp:RegExp = new RegExp(/(0[1-9]|1[012])[\/](0[1-9]|[12][0-9]|3[01])[\/](19|20)\d\d/);

var fmt:DateFormatter = new DateFormatter();
fmt.formatString = "MM/DD/YYYY";

if(!customRegExp.test(fmt.format(dfDate.selectedDate)))

    Alert.show("Please input date in format MM/DD/YYYY");
    enableForm(true);

【讨论】:

以上是关于如何在 actionscript 3 中检查 mm/dd/yyyy 的正确自定义输入?的主要内容,如果未能解决你的问题,请参考以下文章

ActionScript 3 毫秒到mm:ss:mmmm

Actionscript 3 - 检查互联网连接

ActionScript 3 检查项目是否已存在于数组中

ActionScript 3 AS3检查两个不同阵列中的所有值是否相同

Actionscript 2 - 如何检查电影剪辑是不是存在于舞台的特定位置?

ActionScript 3 电子邮件检查