2013-09-13 5 views
0

В приведенном ниже коде функция, которая должна определить, требуется ли поле, не работает. Код относится к веб-сайту, для которого некоторые текстовые поля («person_item») и флажки («chckbox») создаются динамически, а затем добавляются правило проверки. Если установлен флажок набора, связанное текстовое поле «person_item» должно быть проверено (иначе это не так).функция для обязательного поля правила динамической валидации

Я думаю, что я понимаю, почему функция для 'required' не работает (из-за 'nr', но я не знаю, как написать правильный код). (PS: правило проверки действительно работает в отношении ' MaxLength»и„“типа проверки с плавающей точкой)

for(var nr=0;nr<maxitems;nr++){ 
    form = getSingleform(nr,type); 
    $("#wrapper").append(form); 
    $("#person_item"+nr).rules("add", { 
     required: function(element) {return ($('#chckbox'+nr).is(':checked')); }, 
     maxlength: 3, 
     float:true, 
}); //rules add 
}//for 
+1

Можете ли вы показать больше кода. Это зависит от того, как вы объявили переменную 'nr' в содержащейся функции. – Barmar

+0

'# chckbox' + nr - это опечатка? вы не сокращаете #person_item – Vlad

+0

@Barmar: pls см. обновление выше – Joppo

ответ

1

Вы должны использовать немедленно-исполняющую функцию, чтобы закрыть над nr.

for(var nr=0;nr<maxitems;nr++){ 
    form = getSingleform(nr,type); 
    $("#wrapper").append(form); 
    $("#person_item"+nr).rules("add", { 
     required: (function(nr) { 
      return function(element) {return ($('#chckbox'+nr).is(':checked')); }; 
     })(nr), 
     maxlength: 3, 
     float:true, 
    }); //rules add 
}//for 

См Why is this function wrapped in parentheses, followed by parentheses? для объяснения сразу выполнения функций в JavaScript.

+0

это работает, thnx! Я просто все еще новичок, может ли вы немного рассказать об этой «мгновенной функции»? – Joppo

Смежные вопросы