Как обращаться с запятыми, разделенными запятыми и плавающими в CF? - PullRequest
2 голосов
/ 19 июля 2009

Мне нужно проверить значения формы как целые числа.

Я пробовал что-то вроде этого:

<cfloop collection="#form#">
 <cfif form.value eq int(form.value)>
  #form.value# is an integer
 </cfif>
</cfloop>

Он работает до тех пор, пока пользователь не вводит запятую в качестве десятичного разделителя, что является стандартным способом сделать это здесь, в Германии.

Я должен использовать CF MX 6.1.

Ответы [ 3 ]

4 голосов
/ 20 июля 2009

Это также, вероятно, помогло бы изучить доступные международные функции. LSParseNumber () , например.

1 голос
/ 20 июля 2009

Как и Аль Эверетт, я рекомендую использовать определенные для локали функции:

<!--- 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>
1 голос
/ 19 июля 2009

Вы можете, если хотите, сначала десенсибилизировать ввод.

<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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...