2015-10-21 3 views
1

Следующий код в моем приложении ColdFusion 9 для Windows 7 дает указанную выше ошибку. Текстовое поле с именем available_balance имеет значение по умолчанию в $ 0.00. Только если пользователь удаляет это значение и нажмите на кнопку Отправить, происходит это выше ошибка:Ошибка ColdFusion - индекс строки за пределами допустимого диапазона: 0

<cfif (isDefined('form.available_balance') AND (#LSIsCurrency(trim(form.available_balance))# neq ""))> 
    <cfset available_balance = "#replace(replace(trim(form.available_balance),'$','','All'), ',', '')#">   
</cfif> 
+1

В зависимости от общих требований, вы можете сделать поля формы обязательны для заполнения. –

+1

Совет. Когда вы видите имя функции, например *** Is ** Something *, обычно это означает, что функция возвращает true/false, а не строку. Как и следовало ожидать, * LS ** IsCurrency *** возвращает true, если вход считается действительным (зависит от локали) и false, если это не так. Кроме того, не имеет никакого отношения к вашему вопросу, но ни один из знаков фунта в коде не нужен. – Leigh

ответ

2

LSIsCurrency не принимает пустую строку или строку с пробелами только ввода. Возвращает boolean значение.

Таким образом, вы можете попробовать это:

<cfif structKeyExists(form, "available_balance")> 
    <cfset form.available_balance = trim(form.available_balance)> 
    <cfif len(form.available_balance) AND LSIsCurrency(form.available_balance)> 
    <cfset form.available_balance = LSParseCurrency(form.available_balance)> 
    </cfif>  
</cfif> 
+0

Благодарим вас за разъяснение, что вызвало проблему. – nam

Смежные вопросы