2016-01-26 7 views
0

У меня есть таблица, которая автоматически генерируется с данными из базы данных и создается с помощью jquery. Это создается с помощью следующей переменной тр, которая прилагается к основному TBODY: Ниже мой код:Получите значение из скрытого поля ввода в строке таблицы

var list = " <tr id='order_no_tr'><td id='order_no_td" + item.documentno + "'>" + item.documentno + "</td><td>" + item.progressstatus + "</td><td>" + newDate + "</td>\n\ 
           <td><button type='button' id='cnfrmd_rcvd" + item.c_order_id + "' class='btn btn-default btn-sm cnfrmd_rcvd" + item.c_order_id + "' >Confirm Received</button>\n\ 
     <input type='hidden' name='order_no_txt' id='order_no_txt" + item.c_order_id + "' value='" + item.c_order_id + "' class='order_no_txt" + item.c_order_id + " btn btn-primary'/>\n\ 
     </td></tr>"; 
$("#order_no_tbody").append(list); 
$("#order_no_tr").on("click", ".cnfrmd_rcvd" + item.c_order_id, function() { 
    var order_no = this.value; 
    alert(order_no); 
}); 

Теперь я хочу, чтобы получить значение имени HTML ввода называется order_no_txt, я попытался к нему доступ через следующая функция, но она не работает:

$("#order_no_tr").on("click", ".cnfrmd_rcvd" + item.c_order_id, function() { 
    var order_no = this.value; 
    alert(order_no); 
}); 

Просьба сообщить, как я могу это достичь?

+0

Мой совет начать не выборку данных, но создать образец '

' с поддельными данными в нем, и посмотреть, если ваша функция, обрабатывать щелкните работы. –

ответ

1

Поскольку скрытый элемент является дочерним элементом кнопки, вы можете использовать соотношение для перехода к элементу с помощью .next() и получить его значение с помощью метода .val().

$("#order_no_tr").on("click", ".cnfrmd_rcvd" + item.c_order_id, function() { 
    var a = $(this).next(':hidden').val(); 
      //Following can also be used 
      //$(this).closest('td').find(':hidden').val() 
    alert(a); 
}); 

Ссылки

Вы должны научиться event delegation, для динамически создаваемых элементов.


В соответствии с комментарием Клик работает только для первой записи и не для других., Идентификаторы должны быть уникальными. Кажется, вы повторно используете order_no_tr как ID несколько раз, так что это ожидаемое поведение.

Изменить

$("#order_no_tr").on("click", ".cnfrmd_rcvd" + item.c_order_id, function() { 
}); 

Для

$(".cnfrmd_rcvd" + item.c_order_id).on("click", function() { 
}); 
+0

Спасибо за помощь. У меня есть новая проблема. Щелчок работает только для первой записи и не подходит для остальных. Как я могу это решить? Я предполагаю, что проблема должна быть связана с функцией щелчка. –

+0

@ user689017, Обновить ответ узнать [Делегация участников] (http://learn.jquery.com/events/event-delegation/) – Satpal

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