2009-12-16 47 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' }); 
}); 

我认为这是行不通的,但它确实。