我有一個表格供用戶輸入數量。表單具有客戶端驗證,以確保該值是一個整數且在給定範圍內。操作頁面具有服務器端驗證,以確保該值是一個整數並且大於零。爲什麼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! –