Замена eval () для использования конструктора LiveValidation - PullRequest
2 голосов
/ 16 декабря 2009

Я использую LiveValidation для элементов ввода. Они приходят в таблицу, полученную с помощью вызова AJAX, и могут быть кратны 4, где угодно между 4 и 36.

Я использую 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, насколько я знаю, его следует использовать очень экономно.

1 Ответ

2 голосов
/ 16 декабря 2009

Ну, похоже, я могу просто использовать это:

$("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' });
});

Я думал, что это не сработает, но это так.

...