我有一个表格供用户输入数量。表单具有客户端验证,以确保该值是一个整数且在给定范围内。操作页面具有服务器端验证,以确保该值是一个整数并且大于零。为什么ColdFusion认为值“7+”是一个有效的整数值,以及我如何验证它不是?
但是,一种类型的值通过验证并导致我的INSERT/UPDATE查询引发异常。该值是带加号的整数 - 即“7+”或“12+”。
当进入这样一个值,ColdFusion的生成的JavaScript验证抛出一个JavaScript错误:
_CF_checkformAddToCart = function(_CF_this)
{
//reset on submit
_CF_error_exists = false;
_CF_error_messages = new Array();
_CF_error_fields = new Object();
_CF_FirstErrorField = null;
//form element itemQuantity 'INTEGER' validation checks
if (!_CF_checkinteger(_CF_this['itemQuantity'].value, false))
{
_CF_onError(_CF_this, "itemQuantity", _CF_this['itemQuantity'].value, "Error on itemQuantity, please enter an integer value for quantity that is not greater than 500");
_CF_error_exists = true;
}
//form element itemQuantity 'RANGE' validation checks
if (!_CF_checkrange(_CF_this['itemQuantity'].value, 0.0,500.0, false))
{
_CF_onError(_CF_this, "itemQuantity", _CF_this['itemQuantity'].value, "Error on itemQuantity, please enter an integer value for quantity that is not greater than 500");
_CF_error_exists = true;
}
}
一旦我取消了错误弹出窗口,就转到操作页面,在那里我[尝试]验证的值,像这样:
<cfif IsValid("integer", form.itemQuantity) AND form.itemQuantity GT 0>
<cfquery>
INSERT ....
但是,如果试...
<cfset x = Int("7+") />
... ColdFusion引发错误。
是不是一个整数ColdFusion ???
如何解决此问题并验证我的表单输入是否正确?
时间来报告JS验证错误?用于cfform客户端验证的JS升级早已过期。 – Henry
亨利,这是一个CF错误,而不是JS错误。请注意,isValid()调用声明“7+”显然不是整数。这就是说,它是一个* CF * bug! –