Copy link to clipboard
Copied
Hi,
I have a form where I fill a customer-no. into an input field and get the customer name using databinding.
This works fine, but when I put non-numeric values into customer-no I get following error:
Error invoking CFC customer.cfc : The CUST_ID argument passed to the getcustomer function is not of type numeric. [Enable debugging by adding 'cfdebug' to your URL parameters to see more information]
The message is correct, but how can I avoid to run the getcustomer function when the value is not numeric?
Here is my code:
The form:
<cfinput type="text" name="customer_no" style="width:140;background-color:yellow" maxlength="10" validate="integer" validateat="onblur" message="Customer No. format is integer">
<cfinput type="text" name="customer_name" style="width:170" maxlength="200" bind="cfc:customer.getcustomer({customer_no})" readonly="yes">
customer.cfc:
<cfcomponent >
<cffunction name="getcustomer" access="remote" returntype="string" output="yes" >
<cfargument name="cust_id" type="numeric" required="true" >
<cfset r_customer = "">
<cfquery name = "select_customer" dataSource = "x">
SELECT name
FROM customer
WHERE id = <cfqueryparam cfsqltype="cf_sql_numeric" value="#arguments.cust_id#" >
</cfquery>
<cfreturn r_customer>
</cffunction>
</cfcomponent>
Change the argument to type="any", then use isNumeric() inside your function. If it's not numeric, return an empty string.
Copy link to clipboard
Copied
Change the argument to type="any", then use isNumeric() inside your function. If it's not numeric, return an empty string.
Copy link to clipboard
Copied
Yes it works. Thank you very much!
Copy link to clipboard
Copied
Sometimes the simplest solutions are the best
Copy link to clipboard
Copied
biene22 wrote:
The message is correct, but how can I avoid to run the getcustomer function when the value is not numeric?
That is a trick question! The attribute bind="cfc:customer.getcustomer({customer_no})" implies that the function will run automatically, whether or not customer_no is numeric.