如何在JavaScript中向现有表单添加新的表单元素?

3

当单击锚点标签时,如何添加另一个空的表单元素?

我使用了以下代码:

 <div class="nav_left">
<form name="frm" action="#" method="post" onsubmit="return frm_onsubmit();">

<table>
    <tbody><tr>
        <td colspan="2"><h2 id="title">Add Time Group</h2></td>
    </tr>
    <tr>
        <td><input name="action" id="action" value="add" type="hidden"></td>
    </tr>
    <tr>
        <td colspan="2"><h5>Time Group<hr></h5></td>
    </tr>
    <tr>
        <td><a href="javascript:void(null)" title="This will display as the name of this Time Group." class="info" >Description</a></td>
        <td><input name="description" id="description" size="35" tabindex="1" value="" type="text"></td>
    </tr>
    <tr>
        <td colspan="2"><h5>New Time<hr></h5></td>
    </tr>
<tr><td colspan="2">
<table><tbody>
<tr><td>Time to start:</td><td>
<select name="hour_start">
<option value="" selected="">-</option>
<option value="01"> 01</option><option value="2"> 02</option><option value="3"> 03</option><option value="4"> 04</option><option value="05"> 05</option><option value="06"> 06</option><option value="07"> 07</option><option value="08"> 08</option><option value="09"> 09</option><option value="10"> 10</option><option value="11"> 11</option><option value="12"> 12</option><option value="13"> 13</option><option value="14"> 14</option><option value="15"> 15</option><option value="16"> 16</option><option value="17"> 17</option><option value="18"> 18</option><option value="19"> 19</option><option value="20"> 20</option><option value="21"> 21</option><option value="22"> 22</option><option value="23"> 23</option><option value="24"> 24</option>
</select>&nbsp:&nbsp
<select name="minute_start">
<option value="00" selected=""> 00</option>
<option value="01"> 01</option><option value="02"> 02</option><option value="03"> 03</option><option value="04"> 04</option><option value="05"> 05</option><option value="06"> 06</option><option value="07"> 07</option><option value="08"> 08</option><option value="09"> 09</option><option value="10"> 10</option><option value="11"> 11</option><option value="12"> 12</option><option value="13"> 13</option><option value="14"> 14</option><option value="15"> 15</option><option value="16"> 16</option><option value="17"> 17</option><option value="18"> 18</option><option value="19"> 19</option><option value="20"> 20</option><option value="21"> 21</option><option value="22"> 22</option><option value="23"> 23</option><option value="24"> 24</option><option value="25"> 25</option><option value="26"> 26</option><option value="27"> 27</option><option value="28"> 28</option><option value="29"> 29</option><option value="30"> 30</option><option value="31"> 31</option><option value="32"> 32</option><option value="33"> 33</option><option value="34"> 34</option><option value="35"> 35</option><option value="36"> 36</option><option value="37"> 37</option><option value="38"> 38</option><option value="39"> 39</option><option value="40"> 40</option><option value="41"> 41</option><option value="42"> 42</option><option value="43"> 43</option><option value="44"> 44</option><option value="45"> 45</option><option value="46"> 46</option><option value="47"> 47</option><option value="48"> 48</option><option value="49"> 49</option><option value="50"> 50</option><option value="51"> 51</option><option value="52"> 52</option><option value="53"> 53</option><option value="54"> 54</option><option value="55"> 55</option><option value="56"> 56</option><option value="57"> 57</option><option value="58"> 58</option><option value="59"> 59</option>
</select>
</td></tr>

<tr><td>Time to finish:</td><td>
<select name="hour_finish">
<option value="" selected="">-</option>
<option value="01"> 01</option><option value="02"> 02</option><option value="03"> 03</option><option value="04"> 04</option><option value="05"> 05</option><option value="06"> 06</option><option value="07"> 07</option><option value="08"> 08</option><option value="09"> 09</option><option value="10"> 10</option><option value="11"> 11</option><option value="12"> 12</option><option value="13"> 13</option><option value="14"> 14</option><option value="15"> 15</option><option value="16"> 16</option><option value="17"> 17</option><option value="18"> 18</option><option value="19"> 19</option><option value="20"> 20</option><option value="21"> 21</option><option value="22"> 22</option><option value="23"> 23</option><option value="24"> 24</option>
</select>&nbsp:&nbsp

<select name="minute_finish">
<option value="00" selected=""> 00</option>
<option value="01"> 01</option><option value="02"> 02</option><option value="03"> 03</option><option value="04"> 04</option><option value="05"> 05</option><option value="06"> 06</option><option value="07"> 07</option><option value="08"> 08</option><option value="09"> 09</option><option value="10"> 10</option><option value="11"> 11</option><option value="12"> 12</option><option value="13"> 13</option><option value="14"> 14</option><option value="15"> 15</option><option value="16"> 16</option><option value="17"> 17</option><option value="18"> 18</option><option value="19"> 19</option><option value="20"> 20</option><option value="21"> 21</option><option value="22"> 22</option><option value="23"> 23</option><option value="24"> 24</option><option value="25"> 25</option><option value="26"> 26</option><option value="27"> 27</option><option value="28"> 28</option><option value="29"> 29</option><option value="30"> 30</option><option value="31"> 31</option><option value="32"> 32</option><option value="33"> 33</option><option value="34"> 34</option><option value="35"> 35</option><option value="36"> 36</option><option value="37"> 37</option><option value="38"> 38</option><option value="39"> 39</option><option value="40"> 40</option><option value="41"> 41</option><option value="42"> 42</option><option value="43"> 43</option><option value="44"> 44</option><option value="45"> 45</option><option value="46"> 46</option><option value="47"> 47</option><option value="48"> 48</option><option value="49"> 49</option><option value="50"> 50</option><option value="51"> 51</option><option value="52"> 52</option><option value="53"> 53</option><option value="54"> 54</option><option value="55"> 55</option><option value="56"> 56</option><option value="57"> 57</option><option value="58"> 58</option><option value="59"> 59</option>
</select>
</td></tr>

<tr><td>Week Day Start:</td><td>
<select name="day_start">
<option value="">-</option><option value="Monday">Monday</option><option value="Tuesday">Tuesday</option><option value="Wednesday">Wednesday</option><option value="Thursday">Thursday</option><option value="Friday">Friday</option><option value="Saturday">Saturday</option><option value="Sunday">Sunday</option>
</select></td></tr>
<tr><td>Week Day finish:</td><td>
<select name="day_finish">
<option value="">-</option><option value="Monday">Monday</option><option value="Tuesday">Tuesday</option><option value="Wednesday">Wednesday</option><option value="Thursday">Thursday</option><option value="Friday">Friday</option><option value="Saturday">Saturday</option><option value="Sunday">Sunday</option>
</select></td></tr>

</tbody>
</table></td>
</tr>   <tr>
        <td colspan="2"><h6><input name="submit" tabindex="1" value="Submit" type="submit"></h6></td>
    </tr>
</tbody>
</table><!-- end of table frm_timegroups -->
</form>

</td>
</tr>
</tbody></table>
</div>
<!--NAVIGATION ON LEFT-->

<!--NAVIGATION ON RIGHT-->
<div class="rnav">
<ul>
    <li><a class="current" href="addgroup.php">Add Time Group</a></li>

    <li><a class="current_validation" href="#">LINK 1 </a> </li>
</ul>
</div>
现在我需要创建另一个内部有空白字段的表单,当我点击LINK1时,它会被限制为一个,并且必须是相同的表单。 工作代码示例

1
永远不要将任何表单元素命名为 name="submit",否则它会阻止任何脚本提交。你想创建哪些字段? - mplungjan
我想创建另一个选择标签(开始时间,结束时间,开始工作日,结束工作日)。 - Bee
请参考工作的fiddle先生。 - Bee
这个 fiddle 没有告诉我你想添加哪些字段。不管怎样,我使用 clone 找到了一个好的答案。 - mplungjan
阅读重复的帖子并查看我的答案,以了解如何将其连接到您特定的表单。 - mplungjan
显示剩余2条评论
1个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
3

永远不要将任何表单元素命名为name="submit",否则会阻止任何脚本提交。

您想创建哪些字段?

这里是一种通用的方法:我给表单和链接添加了ID:

<form id="frm" action="#" method="post">
<table>
  <tbody id="tb_timegroups">

<a id="create" class="current_validation" href="#">LINK 1 </a>
使用类似脚本的方式
window.onload=function() { 
  document.getElementById("frm").onsubmit=frm_onsubmit;

  document.getElementById("create").onclick=function() {
    var row = document.createElement("tr"),
        cell = document.createElement("td"),
        field = document.createElement("input");
    field.name="somename";
    field.type="text";
    cell.appendChild(field);
    row.appendChild(cell);
    document.getElementById("tb_timegroups").appendChild(row);
  }  
}

根据您的评论,我找到了这个网址,似乎符合您的目的:

使用JavaScript创建表格行的副本并将其附加到表格中

针对您的代码,请检查我添加到链接、表单和表格的ID:

FIDDLE

function frm_onsubmit() {
    if (document.getElementById("description").value == "") {
        return false; // stop submission
    }
    return true; // allow submission

}
window.onload = function () {
    document.getElementById("frm").onsubmit = frm_onsubmit;
    document.getElementById("titleLink").onclick = function () {
        document.getElementById("description").focus(); // or whatever
        return false; // instead of javascript:void
    }

    document.getElementById("clone").onclick = function () {
        var tb = document.getElementById("timeTB");
        var allTBs = tb.querySelectorAll("tbody");
        var fields = allTBs[allTBs.length-1].getElementsByTagName("select");
        var empty = false;
        for(var i=0;i<fields.length;i++) {
            if (fields[i].selectedIndex<1) {
                empty = true;
                break;
            }
        }
        if (empty) {
            alert("Some selects were left");
        }
        else {
          var tb = document.getElementById("timeTB"),
          clone = tb.querySelector("tbody").cloneNode(true); // copy children too
          tb.appendChild(clone)
        }
        return false;
    }
}

谢谢您,但是为什么提交按钮变成了文本框???先生,有没有办法只克隆一个空字段呢? - Bee
如果单击id="clone",你是指什么不能为空?你只有选择框。描述部分是你要克隆的内容吗? - mplungjan
谢谢您先生...认真地说,您会向我收费吗??先生...没有钱我怎么为您付款??服务?? - Bee
你说得对先生...非常感谢您先生..我在思考如何支付您...您曾经访问过菲律宾吗? - Bee
1
如果你曾经来到菲律宾...我在这里...你可以联系我...我可以帮助你了解旅游景点。 - Bee
显示剩余9条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,