2012-03-30 4 views
0

Я пытаюсь написать jquery funciton, который скопирует указанные поля из элемента выше текущего в соответствующие поля текущего элемента. В частности, у меня есть ретранслятор asp.net, который выплескивает таблицы с несколькими полями в нем, и мне нужна функция «То же, что и выше». Однако я все еще новичок в jquery, и у меня проблемы с этим. Вот какой-то код psudo для того, что я сейчас пытаюсь сделать, не стесняйтесь предлагать лучший метод, если вы это знаете или просто исправьте это, чтобы работать.Использование JQuery для копирования значений нескольких полей

function CopyPrevious(sender, rowId) { 
    var current = $(sender).closest('#wrappingDiv').find('.containingTable').eq(rowId); 
    var previous = $(sender).closest('#wrappingDiv').find('.containingTable').eq(rowId - 1); 
    $(current).find('.fieldA').val($(previous).find('.fieldA').val()); 
} 

wrappingDiv просто DIV я ставлю вокруг стола, чтобы я мог найти его «ближе» и каждая таблица имеет класс «containingTable». Я помещал «fieldA», «fieldB» и т. Д. Как имена классов в полях, поэтому я мог найти их для получения значений.

Вопрос У меня есть Java-ошибка на строке 4 выше: $ тока не определен

EDIT: Обновление строки 4 за комментариями. Он работает сейчас. Спасибо.

+1

Он должен быть '$ (текущие) .find ('FieldA.) Вал ($ (предыдущий) .find (' поля А.) Вал().).' –

+0

Возможно запустить отладку на код и добавить часы на значение rowId и current. Посмотрите, установлено ли значение rowId для значения, которое превышает число элементов, возвращаемых выражением. И парень выше правильный, потому что вы не можете назначить val() с = вам нужно передать значение, которое нужно назначить. –

ответ

3

Вы не можете использовать .val() как lvalue. Чтобы установить новое значение, передайте его как аргумент:

$(current).find('.fieldA').val($(previous).find('.fieldA').val()); 
+0

Это полезно знать, но я все еще получаю $ current не определен. Я думаю, что строка 2 терпит неудачу. – William

+0

Как вы можете видеть, в вашем коде нет '$ current'. Таким образом, ошибка не вызвана кодом, который вы опубликовали. – ThiefMaster

+0

Я знаю, что это часть моего смятения. Что такое мой код только с разными именами классов. Я не знаю, является ли консоль ошибок FireFox странной или что. – William

-1

Не совсем уверен, что я буду следовать, но это сработает для вас?

function CopyPrevious(sender, rowId) { 
    var current = $(sender).closest('.wrappingDiv').find('.containingTable input'); 
    var previous = $(sender).closest('.wrappingDiv').prev().find('.containingTable input'); 
    current.each(function(){ 
     ($this).val(previous.is('.' + $(this).attr('class')).val()); 
    }); 
} 
Смежные вопросы