0

テーブルにフォームがあり、このコードを使用して新しいフィールドを持つ新しい行を追加します。

$("input.buttonCAdd").click(function(){ 
    $('#table > tbody > tr').eq(2).after('<tr><td width=\"25%\"><b>Substancje czynna:</b></td><td width=\"25%\"><select name=\"nazwamiedzynarodowa[]\"><option selected=\"selected\">nazwa1</option><option>nazwa2</option></select></td><td> Dawka: <br><input name=\"dawka[]\" type=\"text\"> <br></td><td>Jednostka:<br><select name=\"jednostka[]\"><option selected=\"selected\">jed1</option><option>jed2</option></select></td> </tr>')
});

それは問題なく動作しますが、私のフォームは新しいフィールドを「認識」せず、そのフィールドからデータを取得しません。どうすれば修正できますか?

4

1 に答える 1

0

これが役に立つかどうかはわかりませんが、問題はここにあるのではないかと思います: "上記の例のように、HTML が属性のない単一のタグよりも複雑な場合、要素の実際の作成は次のように処理されます。ブラウザーの innerHTML メカニズム。" jQuery ドキュメントから引用 ( 2も参照) innerHTML を回避すれば、うまくいくと思います。標準の JavaScript メソッドを使用してみてください。

//new row
var newrow = document.createElement('tr'); // creates empty row

//1st cell
var newcell = newrow.insertCell(0); // create and insert empty cell to newrow + returns cell reference
newcell.style.width = '25%';
newcell.style.fontWeight = 'bold';
newcell.appendChild(document.createTextNode('Substancje czynna:'));

//2nd cell
var newcell = newrow.insertCell(1);
newcell.style.width = '25%';
var newselect = document.createElement('select');
newselect.setAttribute('name', 'nazwamiedzynarodowa[]');
newselect.options[0] = new Option('nazwa1', 'opt1');
newselect.options[1] = new Option('nazwa2', 'opt2');
newselect.options[0].selected = true;
newcell.appendChild(newselect);

//3rd cell
var newcell = newrow.insertCell(2);
newcell.appendChild(document.createTextNode(' Dawka: '));
newcell.appendChild(document.createElement('br'));

//4th cell
var newcell = newrow.insertCell(3);
var newselect = document.createElement('select');
newselect.setAttribute('name', 'jednostka[]');
newselect.options[0] = new Option('jed1', 'opt1');
newselect.options[1] = new Option('jed2', 'opt2');
newselect.options[0].selected = true;
newcell.appendChild(newselect);

//alert(newrow.innerHTML);
$('#table > tbody > tr').eq(2).after(newrow);
于 2012-06-26T17:13:42.130 に答える