JQuery - как добавить вход с именем массива в строку? - PullRequest
0 голосов
/ 09 октября 2011

Я настраиваю форму, которая будет динамически создавать текстовое поле и добавлять его в таблицу.Имя текстового поля является массивом, поэтому оно содержит скобки.Приведенный ниже код не добавляет поле ввода, скорее он выплевывает обратно [объект HTMLInputElement].Я предполагаю, что это из-за скобок?Есть ли способ сделать это?

//HTML
<table id="notesplus" cellpadding="0" cellspacing="0">
<thead></thead>
<tbody></tbody>
</table>

//JQUERY
$(document).ready(function() {
  $('input[id=addIt]').live('click', function() {
     addPlus();
  });
});

function addPlus() {
  var item = document.createElement("textarea");
  item.setAttribute("name", "section[0][aplus]"+mycount+"[notes]");

  var sRow1 = $('<tr>').appendTo('table#notesplus tbody');
  var sCell1 = $('<td>').html(item).appendTo(sRow1);
}

Ответы [ 3 ]

0 голосов
/ 09 октября 2011

В данный момент вы пытаетесь использовать html для вставки объекта HTML - но jQuery ожидает получить здесь строку HTML и поэтому преобразует ваш объект в текст, прежде чем добавить его в вашу ячейку.

Изменить последнюю строку на:

var sCell1 = $('<td>').append(item).appendTo(sRow1);
0 голосов
/ 09 октября 2011

Я бы попробовал сделать это так, посмотрим, сработает ли это.

function addPlus() {
  var item = document.createElement("textarea");
  var strName = "section[0][aplus]"+mycount+"[notes]";
  item.setAttribute("name", strName);

  $('table#notesplus tbody').append('<tr><td></td></tr>');
  $('table#notesplus tbody tr:last-child td').append(item);      

}

или что-то в этом роде.

0 голосов
/ 09 октября 2011

Прежде всего измените ваш селектор $('input[id=addIt]') на $('#addIt').Это намного быстрее.

Также я проверил ваш код, и он работает.Единственное, что я добавил mycount переменную.

Код: http://jsfiddle.net/qha9f/1/

...