2011-06-22 22 views
2

我有一個表單字段ID的多維數組,以及他們有哪些類型的錯誤檢查。我想爲每個錯誤字段添加一個模糊事件,所以當用戶離開它去到下一個字段時,它會確保字段是有效的。使用變量數組來創建jQuery模糊事件

我創建了一個for循環,其中創建了模糊事件和一個警報,以確保爲該字段創建模糊。警報告訴所有字段都添加了驗證,但是當我在頁面上測試它時,無論我將離開blur事件的字段只驗證陣列中的最後一個字段。

這是功能。

function SetErrorFields(fields) { 
    var ErrorFields = fields; 

    for (Field in ErrorFields) { 
     alert("Field: "+ErrorFields[Field][0]+" | Validations: "+ErrorFields[Field][1]); 
     $('#'+ErrorFields[Field][0]).blur(function(){ 
      Validate(ErrorFields[Field][0],ErrorFields[Field][1]); 
     }); 
    } 

} 

我試過改變一些東西,但是沒有任何工作或事情變得更糟。貝婁是我所嘗試和結果的清單。

將ErrorFields [Field] [0]更改爲Field [0],但將警報中的所有內容都更改爲「undefined」。

當離開字段時,使用以下代碼將引發「x未定義」錯誤。

for (x=0; x<ErrorFields.length; x++) { 
    alert("Field: "+ErrorFields[x][0]+" | Validations: "+ErrorFields[x][1]); 
    $('#'+ErrorFields[x][0]).blur(function(){ 
     Validate(ErrorFields[x][0],ErrorFields[x][1]); 
    }); 
} 

而我無法弄清楚每種方法。

+0

在我發佈問題後,我發現了一個解決方案,它永遠不會令我感到厭倦。很快就會發布。 – nroscoe

回答

2

有一個有用的參數叫做eventData。它允許您在聲明事件時將數據發送到事件。下面的作品。

function SetErrorFields(fields) { 
    ErrorFields = fields; 
    for (Field in ErrorFields) { 
     alert(ErrorFields[Field][0]+" | "+ErrorFields[Field][1]+" | "+$('#'+ErrorFields[Field][0]).val()); 
     $('#'+ErrorFields[Field][0]).blur({fld: ErrorFields[Field][0], err: ErrorFields[Field][1]}, function(event){ 
      Validate(event.data.fld,event.data.err); 
     }); 
    } 

} 

想知道更進一步的解釋here