我必须将表单值验证为整数。
我尝试过这样的事情:
<cfloop collection="#form#">
<cfif form.value eq int(form.value)>
#form.value# is an integer
</cfif>
</cfloop>
只要用户不输入逗号作为小数分隔符,它就可以正常工作,这是在德国这样做的默认方式。
我必须使用CF MX 6.1。
答案 0 :(得分:4)
查看可用的国际函数也可能有所帮助。例如LSParseNumber()。
答案 1 :(得分:1)
如果您愿意,您可以先对输入进行脱敏。
<cfset var comma = ",">
<cfset var period = ".">
<cfset form.value = replace(form.value, comma, period, "all")>
但是,如果您只需要验证字段是否为整数,为什么不查看CFLib.org - IsInt?
<cfscript>
/**
* Checks to see if a var is an integer.
* version 1.1 - mod by Raymond Camden
*
* @param varToCheck Value you want to validate as an integer.
* @return Returns a Boolean.
* @author Nathan Dintenfass (nathan@changemedia.com)
* @version 1.1, April 10, 2002
*/
function isInt(varToCheck){
return isNumeric(varToCheck) and round(varToCheck) is vartoCheck;
}
</cfscript>
答案 2 :(得分:1)
与Al Everett一样,我建议使用特定于语言环境的功能:
<!--- actually *setting* the desired locale is mandatory for this to work --->
<cfset SetLocale("German (Standard)")>
<cfif CGI.REQUEST_METHOD eq "POST">
<!--- loop the FieldNames list so only real posted values are handled --->
<cfloop list="#FORM.FieldNames#" index="FieldName">
<cfif LSIsNumeric(FORM[FieldName])>
<cfset num = LSParseNumber(FORM[FieldName])>
<!--- do stuff with #num# --->
</cfif>
</cfloop>
</cfif>