0 レビュー
1 回答
javascript-新しい要素を投稿しない動的フォーム
テーブル内にある静的な既存のフォームを、「選択」に応じて動的になるように調整しようとしています。
私が行ったことは、既存のテーブルID-> "peticionobras"に新しいTRのTDを作成し、innerHtmlを使用して必要な新しい入力テキストを入力することです。プレーンJavaScriptのすべては次のとおりです:
//if select is...
if (value == "A" || value == "B" || value == "C"){
var tableObras = document.getElementById("peticionobras");
if (tableObras.rows[5].cells[0].innerHTML.includes("Codigo_Emp_Actuacion")){
var row = tableObras.insertRow(5);
var cell1 = row.insertCell(0);
var cell2 = row.insertCell(1);
cell1.innerHTML = "<dd><b>C_Emp_con_necesidad</b>:";
cell2.innerHTML = "<input type='text' id='C_Emp_con_necesidad' name='C_Emp_con_necesidad'> <br><br><bdi id='C_Emp_con_necesidad_tag'>Emplazamiento con problemas potencialmente solucionables con la implantaci\u00F3n</bdi><br><br>";
document.getElementById("C_Emp_con_necesidad").setAttribute("required", true);
var row = tableObras.insertRow(6);
var cell1 = row.insertCell(0);
var cell2 = row.insertCell(1);
cell1.innerHTML = "<dd><b>D_Emp_con_necesidad</b>:";
cell2.innerHTML = "<input type='text' id='D_Emp_con_necesidad' name='D_Emp_con_necesidad'> <bdi id='D_Emp_con_necesidad_tag'></bdi>";
document.getElementById("D_Emp_con_necesidad").setAttribute("required", true);
var row = tableObras.insertRow(9);
var cell1 = row.insertCell(0);
var cell2 = row.insertCell(1);
cell1.innerHTML = "<dd><b>Direccion_coordenadas</b>:";
cell1.id = "testtdtd";
cell2.innerHTML = "<input type='text' id='Direccion_coordenadas' name='Direccion_coordenadas'> <bdi id='Direccion_coordenadas_tag'></bdi>";
document.getElementById("Direccion_coordenadas").setAttribute("required", true);
}
}
アスペクトの結果は良好で、必要なものを本来あるべき場所に配置します。しかし、動作は正しくありません。新しい必須フィールドは必須として表示されません。フォームを送信すると、新しい入力は送信されません。
(注意:未定義のインデックス:D_Emp_con_necesidad in ...)
メインページのコードは概略的に次のとおりです。
<table id="peticionobras"> <tbody> <form action="./test.php" method="POST"> <tr><td>1</td><td>2</td></tr> <tr><td>2</td><td>2</td></tr> <tr><td>3</td><td>2</td></tr> <tr><td>4</td><td>2</td></tr> <tr><td>6</td><td>2</td></tr> <tr><td>7</td><td>2</td></tr> <tr><td>8</td><td>2</td></tr> <tr><td>9</td><td>2</td></tr> <tr><td>10</td><td>2</td></tr> <tr><td><button type="submit" value="submit">Submit</button></td><td>2</td></tr> </form> </tbody> </table>
私がそれを実装した方法はあまりにも単純すぎると思います。 テーブル
id='peticionobras'
内の5、6、9の位置にある既存のフォームid='obras'
に新しい入力を追加する方法に関する提案または従うべき手がかりがあれば、それは非常に高く評価されるでしょう。ありがとう よろしく
わからない
0
レビュー
答え :
解決策:
*編集済み[@QUENTINが次の質問で説明したように: テーブル内のフォーム -フォームをテーブル、tbody、またはtrの子要素にすることはできません-
<form action="./test.php" method="POST">
<table id="peticionobras">
<tbody>
<tr><td>1</td><td>2</td></tr>
<tr><td>2</td><td>2</td></tr>
<tr><td>3</td><td>2</td></tr>
<tr><td>4</td><td>2</td></tr>
<tr><td>6</td><td>2</td></tr>
<tr><td>7</td><td>2</td></tr>
<tr><td>8</td><td>2</td></tr>
<tr><td>9</td><td>2</td></tr>
<tr><td>10</td><td>2</td></tr>
</tbody>
</table>
<button type="submit" value="submit">
Submit
</button>
</form>
<script>
var value = 'A';
if (value == "A" || value == "B" || value == "C"){
var tableObras = document.getElementById("peticionobras");
if (tableObras.rows[5].cells[0].innerHTML.includes("Codigo_Emp_Actuacion")){
var row = tableObras.insertRow(5);
var cell1 = row.insertCell(0);
var cell2 = row.insertCell(1);
cell1.innerHTML = "<dd><b>C_Emp_con_necesidad</b>:";
cell2.innerHTML = "<input type='text' id='C_Emp_con_necesidad' name='C_Emp_con_necesidad'> <br><br><bdi id='C_Emp_con_necesidad_tag'>Emplazamiento con problemas potencialmente solucionables con la implantaci\u00F3n</bdi><br><br>";
document.getElementById("C_Emp_con_necesidad").setAttribute("required", true);
var row = tableObras.insertRow(6);
var cell1 = row.insertCell(0);
var cell2 = row.insertCell(1);
cell1.innerHTML = "<dd><b>D_Emp_con_necesidad</b>:";
cell2.innerHTML = "<input type='text' id='D_Emp_con_necesidad' name='D_Emp_con_necesidad'> <bdi id='D_Emp_con_necesidad_tag'></bdi>";
document.getElementById("D_Emp_con_necesidad").setAttribute("required", true);
var row = tableObras.insertRow(9);
var cell1 = row.insertCell(0);
var cell2 = row.insertCell(1);
cell1.innerHTML = "<dd><b>Direccion_coordenadas</b>:";
cell1.id = "testtdtd";
cell2.innerHTML = "<input type='text' id='Direccion_coordenadas' name='Direccion_coordenadas'> <bdi id='Direccion_coordenadas_tag'></bdi>";
document.getElementById("Direccion_coordenadas").setAttribute("required", true);
}
}
</script>
わからない
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。