2014-09-03 2 views
0

У нас есть частичный вид View1 следующим образом:Найти контроль динамически добавил частичный вид содержимого диапазона в JQuery

@using (Html.BeginCollectionItem) 
{ 
    <div id = "partialview-content> 
     <table > 
      <tr> 
       <td> 
        @Html.TextBoxFor(x=>x.Name, new {id = "name", @class = "name-class"}) 
        // Additional controls 
       </td> 
      </tr> 
      <tr class="rowSpace"> 
       <td>Label Text</td> 
       <td> 
        <span id="business-key-id"> 
         @Html.DisplayFor(x=>x.BusinessKey) 
        </span> 
       </td> 
      </tr> 
     </table> 
    } 
</div> 

Когда пользователь нажимает на Добавить новый элемент в главном представлении, частичный вид будет добавлен динамически.

Когда пользователь вводит текст в текстовом поле с именем в динамически добавленном частичном представлении, BusinessKey DisplayFor следует динамически обновлять.

Поэтому я добавил ниже код в JQuery:

$(document).ready(function() { 

    $(".name-class").live('keyup', function (event) { 

     var name1 = $("#name1").val(); 
     var name2 = $("#name2").val(); 

     var name = $(this).val(); 

     (".business-key-id").html(trustName + ' ' + seriesName + ' ' + trancheName); 
    });  
}); 

Выполнение этого кода обновляет бизнес-ключ-идентификатор всех динамически добавляемые частичный вид. Как я могу получить контроль над бизнес-ключом, специфичным для контроля событий keydown?

ответ

1

Эта линия выбирает все элементы с именем класса бизнес-ключ-идентификатор

$(".business-key-id").html(... 

Изменить селектор для выбора только на следующий элемент

$(".name-class").on(... 
    $(this).next('.business-key-id').html(... 

Примечание .live было обесценился - вы должны использование .on

Редактировать

на основе пересмотренного HTML OP, в селектор, чтобы выбрать coresponding business-key-id должен быть

$(this).closest('table').find('.business-key-id).html(... 

И изменить HTML, чтобы использовать атрибут class, не id атрибут (дубликат ID недействительны HTML)

<span class="business-key-id"> 
    @Html.DisplayFor(x=>x.BusinessKey) 
</span> 
+0

Спасибо Стивен за входные данные. Я пропустил некоторое гнездование в моем предыдущем вопросе. Я обновил то же самое в своем вопросе сейчас. Я заменил .live, чтобы использовать .on в JQuery, а затем добавил .next ('tr.rowSpace td span.business-key-id'). Html ('...'); На этот раз в пользовательском интерфейсе ничего не обновляется. Поэтому мой селектор JQuery ошибочен. Не могли бы вы исправить меня, где именно я ошибаюсь. – user3799570

+0

ОК, вам нужно изменить селектор, чтобы он соответствовал пересмотренному html. Я скоро обновлю ответ –

+0

Спасибо Стивен. Ваш образец кода работал для меня. – user3799570

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