这个问题已经在这里有一个答案:
- JavaScript的日期格式的ColdFusion日期字段 1回答
这是非常令人沮丧。 我使用cfinput datefield
和mask="MM/DD/YYYY"
和其不工作。 如果是cfinput text
和mask="MM/DD/YYYY"
它的作品完美。 我不想只是有一个文本框,但我想保持的日期字段给出你...问题是日历时他们使用的日历它是正确的格式MM / DD / YYYY但如果用户只是类型中的日期到文本框中不使用日历,用户可以输入任何他们想要..(122334435)这显然是不能接受的。 任何意见或解决方法的人可能知道的?
作品:
<cfform name="foo">
<cfinput
type="text"
name="test"
validate="eurodate"
mask="99/99/9999"
validateat="onblur" />
<input type="submit">
</cfform>
不工作:
<cfform name="foo">
<cfinput
type="datefield"
name="test"
validate="eurodate"
mask="MM/DD/YYYY"
validateat="onblur" />
<input type="submit">
</cfform>
我增加了一个答案, 其他问题那是在讨论同样的问题最初打开。 我会在这里发表一点,以及因为用户可能会发现这个问题,而不是其他的。 或者你可以删除这个问题。
我认为,问题是, mask
的属性<cfinput type="datefield" ...
代码只使用Flash形式的作品时- 文档参考 。
我强调从下文件全文 :
屏蔽cfcalendar和输入的DateField
在cfcalendar标签和Flash格式的DateField输入控件 ,可以使用下面的面具,以确定输出的格式。 您可以在面膜使用大写或小写字符:
...
下面的模式指定闪存形式发送使用的DateField输入控制到ColdFusion作为在格式2004年4月29日的文本选择的日期:
<cfinput name="startDate" type="datefield" label="date:" mask="mm/dd/yyyy"/>
既然你不使用Flash格式的面具是不是为你工作。 你可以尝试切换到常规<cfinput type="text" ...
的输入和改变你的面具有点像"99/99/9999"
。 这会给你正确的格式,但用户仍然可以输入无效日期,所以你需要额外的代码,以赶上。
这就是为什么使用的只是另一个例子内置的ColdFusion UI标签是不是一个好主意。 他们非常简单的例子工作,但是当你需要更多的自定义他们失败了你。 你会过得更好使用的客户端验证JavaScript库(如jQuery)。 Adobe公司自己的本·福尔塔这个几年前承认 。 和ColdFusion的-UI最右侧路项目开始,因为这一点。
编辑
在被张贴的其他问题亚当指出ColdFusion文档中的另一个参考 ,从而加强了我的观点。 我强调从下文件全文 :
屏蔽输入数据
在HTML和Flash形式中,所述掩模属性控制可以输入到文本字段或者是在将DateField输入控制日历选择的数据的格式。 在HTML格式,它不会阻止用户输入不遵循面具到的DateField输入控制的日期。 您可以在现场结合掩蔽和验证。