2009-12-16 100 views
2

我使用LiveValidation作爲輸入元素。這些表格是通過AJAX調用檢索的,可以是4的倍數,在4到36之間。使用LiveValidation構造函數替換eval()

我使用eval來調用LiveValidation的構造函數,因爲每個AJAX後輸入元素的數量可能會有所不同電話,我想不到另一種方式(我沒有太多的JavaScript經驗)。

我使用這個:

$("input[type=text]", tableElement).each(function(index) { 
    eval("var temp_" + index + " = new LiveValidation(this, { wait: 0, validMessage: ' ' });"); 
    eval("temp_" + index + ".add(Validate.Numericality, { onlyInteger: true });"); 
    eval("temp_" + index + ".add(Validate.Presence, { failureMessage: 'Cannot be blank' });"); 
}); 

什麼是做不使用eval達到同樣的更好的辦法,因爲我知道它應該非常謹慎使用。

回答

2

嗯,好像我就可以用這個:

$("input[type=text]", tableElement).each(function(index) { 
    var temp = new LiveValidation(this, { wait: 0, validMessage: ' ' }); 
    temp.add(Validate.Numericality, { onlyInteger: true }); 
    temp.add(Validate.Presence, { failureMessage: 'Cannot be blank' }); 
}); 

我認爲這是行不通的,但它確實。