2012-08-26 45 views
2

我想爲頁面上的所有字段創建一個通用的單擊事件函數,主要檢查目標是空白的還是包含用戶輸入的值。但是,我希望這個泛型函數檢查是否存在一個更具體的函數,並且如果找到了它,則允許它處理目標值的驗證。 例如:typeof調用函數的名稱作爲字符串傳遞

function genValueCheck(event) { 
    var af = event.target.id+'_checkValue'; 
    if (typeof af == 'function') runFunction(af,[event]); // logic specific to this field 
    else { 
     // logic for checking for blanks, etc which applies to all fields 
    } 
} 

不過的typeof返回「串」在上面的例子,因爲它應該,因爲它正在檢查的typeof「AF」,而不是「自動對焦」包含,即函數的名稱。

是我正在嘗試做的可能嗎?

在此先感謝。

回答

1

那是因爲af的一個字符串。如果您的功能存在於全局範圍內,請使用window[af]。這應該爲你工作:

function genValueCheck(event) { 
    var af = event.target.id+'_checkValue'; 
    if (typeof window[af] == 'function') runFunction(af,[event]); // logic specific to this field 
    else { 
     // logic for checking for blanks, etc which applies to all fields 
    } 
} 

Demo

+0

完善!並感謝您的快速響應! – cameron

1

創建一個包含所有功能的對象,所以你不污染全局命名空間,然後使用括號來找回它:

var validators = {}; 
validators.checker1 = function() { ... }; 

function genValueCheck(event) { 
    var af = event.target.id+'_checkValue'; 
    if (typeof validators[af] == 'function') { 
     validators[af](event); // logic specific to this field 
    } else { 
    // logic for checking for blanks, etc which applies to all fields 
    } 
} 
相關問題