- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的代码在这个 https://jsfiddle.net/tek8b41g/1/ 中列出
我想这样做,以便在我需要另一次“旅行”时可以添加另一个表格,有没有一种简单的方法可以做到这一点?我正在考虑做隐藏的 div,但想知道是否有其他方法。
提前致谢。
HTML:
<body bg=grey>
<div id="wrap">
<tr>
<form method="POST"><br />
<div id="center">
<center>Driver Line Input page </center>
</div>
<br />
<div class="centerDynamic">
<label>
<input type="radio" name="countyLabel" value="radio" id="countyLabel_0" />Eagle County</label>
<label>
<input type="radio" name="countyLabel" value="radio" id="countyLabel_1" />Summit County</label>
<br />Driver Name: <input name="dNameT1" type="text" value="" size="25" /><br />Trip Time: <input name="tripTimeT1" type="text" value="" size="5" /><br />First Pickup: <input name="firstPickupT1" type="" value="" size="5" /><br />Town: <input name="townT1" type="text" value="" size="25" id="townT1" /><br />
<label>Transfer during this trip:<input type="radio" name="transferYesT1" value="radio" id="transferGroup_1T1" />Yes</label>
<label>
<input name="transferNoT1" type="radio" id="transferGroup_1a" value="radio" checked="checked" />No</label>
<br />
<label for="transferDrivera">Transfer Driver</label> <input type="checkbox" name="transferDriverT1" id="transferDrivera" />
<br />Need Carseat/Booster?<label>
<input type="radio" name="carseatYesT1" value="radio" id="RadioGroup1_0" />Carseat</label>
<label><input type="radio" name="boosterYesT1" value="radio" id="RadioGroup1_1" />Booster</label>
<label><input type="radio" name="noneT1" value="radio" id="RadioGroup1_2" />None</label>
<br /><br />
</div>
<input type="button" value="Add Another Trip" onClick="addInput('centerDynamic');" />
</form>
</tr>
</div>
</body>
CSS:
@charset "utf-8";
/* CSS Document */
#wrap {
width: 900px;
margin: 0 auto;
}
#centerDynamic{
width: 500px;
margin: 0 auto;
}
Javascript:
var counter = 1;
var limit = 34;
function addInput(centerDynamic){
if (counter == limit) {
alert("You have reached the limit of adding " + counter + " inputs");
}
else{
var newdiv = document.createElement('div');
newdiv.innerHTML = "Entry " + (counter + 1) + " <br><input type='text' name='myInputs[]'>";
document.getElementById(centerDynamic).appendChild(newdiv);
counter++;
}
}
最佳答案
目标:点击按钮复制表单。
解决方案:利用 cloneNode()
和 appendChild()
方法
问题:总体而言,OP 的功能不足以处理目标。我们将继续探索解决方案,并尝试突出显示存在差异的某些领域,而不是列出问题所在。
#id
:OP 的代码没有出现重复的 id,但我之所以提到这一点,是因为这是一个经常出现的常见错误。复制 HTML 时,重要的是要始终记住 should never be any duplicated ids
.
name
:此属性被表单元素广泛使用,并且在与 <input type="radio">
一起使用时必不可少。 .对于每组单选按钮,我们应该总是分配一个name
到每个单选按钮。这可确保仅从组中选择一个单选按钮。
提示:分配id
时和 name
至 <form>
和表单元素,让它们具有相同的值会更容易(单选按钮除外)。有关简短的公正解释,请参阅此 post .有varying opinions on this topic ,我的看法是,如果你使用相同的 name
和 id
在每个表单元素上,那么你就有了所有可用的选项,你不必担心你是否使用了正确的选项。请记住,如果可能的话,尽量保留 id
和 name
简单而实用,尤其是当您打算复制它们并为其编号时。
假设这只是一个草稿,而不是一个完成的元素,我们不会深入探讨样式的细节。请注意,我对 CSS 进行了重大更改,所以请随意提问或批评。
我真的不能将 OP 的代码视为复制表单,它更像是一个扩展:
结果:
// up to 34 extra identical inputs that don't match up to the original form.
<br><input type='text' name='myInputs[]'>
不是很有用。以下是我所看到的有关复制表单主题的细目分类:
使用 JS 复制表单的常用方法是使用方法 cloneNode()
和 appendChild()
.
默认 cloneNode()
实际上是 cloneNode(false)
该参数是一个 bool 值,用于确定克隆的深度。如果设置为 false 或根本不设置,cloneNode()
将生成一个浅 副本——所有属性、值,没有子项。设置为 true,将导致深度复制——所有后代、属性和值——一切(有一个异常(exception)——作为事件监听器/绑定(bind)将不会已复制)。
由于复制了所有属性,这也意味着 id
以及。我们必须通过收集克隆中的每个元素并为每个元素分配一个唯一的 id
来为此做好准备。 .该演示通过使用以下内容提供了这一点:
querySelectorAll()
将元素收集到 NodeList
中.NodeList.length
以确定当前的表格总数。 Array.prototype.slice.call()
转换 NodeList
到Array
.for
loop遍历 Array
.setAttribute()
分配 id
和 name
每次迭代。JS中有一步一步的注释。我遗漏了一些细节,因为我不想让你休眠。请注意,这不是实现目标的唯一方法,这只是众多方法之一。
片段
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>35517008</title>
<style>
* { vertical-align: baseline; }
h2 { text-align: center; }
.center { margin: 0 auto; }
fieldset { margin: 0 auto; width: 50%; }
fieldset div { float: left; clear: left; }
#btn1 { position: relative; left: 65%; }
input[type="submit"] { float: right; }
input { margin: 0 5px 5px 0; }
label { padding: 0 0 5px 5px; }
input + input { margin-left: 10px; }
</style>
</head>
<body>
<h2>Driver Line Input Page</h2>
<input id="btn1" class="center" type="button" value="Add Additional Trip" />
<form id="line1" name="line1" method="post" class="center">
<fieldset>
<legend>Line 1</legend>
<div>
<label>
<input type="radio" name="county" value="radio" id="eagle" />
Eagle County
<input type="radio" name="county" value="radio" id="summit" />
Summit County
</label>
</div>
<div>
<label for="driver">Driver Name:
<input name="driver" id="driver" type="text" size="25" />
</label>
</div>
<div>
<label for="time">Trip Time:
<input name="time" id="time" type="text" size="5" />
</label>
<label for="pickup">First Pickup:
<input name="pickup" id="pickup" type="text" size="5" />
</label>
<label for="city">City:
<input name="ciy" id="city" type="text" size="25" />
</label>
</div>
<div>
<label>Transfer Enroute:
<input type="radio" name="trans" id="yes" />
Yes
<input type="radio" name="trans" id="no" checked />
No
</label>
<label for="tDriver">Transfer Driver:
<input name="tDriver" id="tDriver" />
</label>
</div>
<div>
<label>Carseat/Booster Request:
<input type="radio" name="child" id="seat" />
Carseat
<input type="radio" name="child" id="booster" />
Booster
<input type="radio" name="child" id="none" checked />
None
</label>
</div>
<input type="submit" id="submit" name="submit"/>
</fieldset>
<br />
<br />
</form>
<script>
/* When the "Add Additional Trip" button is clicked ... */
var btn1 = document.getElementById('btn1');
btn1.addEventListener('click', function(e) {
// Collect all forms into a NodeList
var forms = document.querySelectorAll('form');
// Total number of forms and the new serial number
var qty = forms.length;
var step = (qty + 1).toString();
// The original form
var template = forms[0];
// Make a clone of the original form
var dupe = template.cloneNode(true);
// Reference the clone's displayed title
var line = dupe.querySelector('legend');
// Set clone's title to Line {{number}}
line.innerHTML = "Line "+ step;
// Set clone's id and name to form{{number}}
dupe.setAttribute('id', 'line'+ step);
dupe.setAttribute('name', 'line'+ step);
// Collect all of clone's inputs into a NodeList
var inputs = dupe.querySelectorAll('input');
// Convert the NodeList into an Array
var inpArray = Array.prototype.slice.call(inputs);
// Iterate through the Array and assign a unique id and name to each one
for(var i = 0; i < inpArray.length; i++) {
var inpID = inpArray[i].getAttribute('id');
var inpName = inpArray[i].getAttribute('name');
inpArray[i].setAttribute('id', inpID + step);
inpArray[i].setAttribute('name', inpName + step);
}
// Place clone after the last form
document.body.appendChild(dupe);
}, false);
</script>
</body>
</html>
关于javascript - 寻找一种动态添加包含多个表单项的 div 的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35517008/
我创建了一个用户可以添加测试的字段。这一切运行顺利我只希望当用户点击(添加另一个测试)然后上一个(添加另一个测试)删除并且这个显示在新字段中。 所有运行良好的唯一问题是点击(添加另一个字段)之前添加另
String[] option = {"Adlawan", "Angeles", "Arreza", "Benenoso", "Bermas", "Brebant
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
我正在努力将 jQuery 滚动功能添加到 nav-tab (Bootstrap 3)。我希望用户能够选择他们想要的选项卡,并在选项卡内容中有一个可以平滑滚动到 anchor 的链接。这是我的代码,可
我正在尝试在用户登录后再添加 2 个 ui 选项卡。首先,我尝试做一个之后。 $('#slideshow').tabs('remove', '4'); $("#slideshow ul li:last
我有一个包含选择元素的表单,我想通过选择添加和删除其中一些元素。这是html代码(这里也有jsfiddle http://jsfiddle.net/txhajy2w/):
正在写这个: view.backgroundColor = UIColor.white.withAlphaComponent(0.9) 等同于: view.backgroundColor = UICo
好的,如果其中有任何信息,我想将这些列添加到一起。所以说我有 账户 1 2 3 . 有 4 个帐户空间,但只有 3 个帐户。我如何创建 java 脚本来添加它。 最佳答案 Live Example H
我想知道是否有一种有效的预制算法来确定一组数字的和/差是否可以等于不同的数字。示例: 5、8、10、2,使用 + 或 - 等于 9。5 - 8 = -3 + 10 = 7 + 2 = 9 如果有一个预
我似乎有一个卡住的 git repo。它卡在所有基本的添加、提交命令上,git push 返回所有内容为最新的。 从其他帖子我已经完成了 git gc 和 git fsck/ 我认为基本的调试步骤是
我的 Oracle SQL 查询如下- Q1- select hca.account_number, hca.attribute3, SUM(rcl.extended_amou
我正在阅读 http://developer.apple.com/iphone/library/documentation/iPhone/Conceptual/iPhoneOSProgrammingG
我正在尝试添加一个“加载更多”按钮并限制下面的结果,这样投资组合页面中就不会同时加载 1000 个内容,如下所示:http://typesetdesign.com/portfolio/ 我对 PHP
我遇到这个问题,我添加了 8 个文本框,它工作正常,但是当我添加更多文本框(如 16 个文本框)时,它不会添加最后一个文本框。有人遇到过这个问题吗?提前致谢。 Live Link: JAVASCRIP
add/remove clone first row default not delete 添加/删除克隆第一行默认不删除&并获取正确的SrNo(例如:添加3行并在看到问题后删除SrNo.2)
我编码this ,但删除按钮不起作用。我在控制台中没有任何错误.. var counter = 0; var dataList = document.getElementById('materi
我有一个类似数组的对象: [1:数组[10]、2:数组[2]、3:数组[2]、4:数组[2]、5:数组[3]、6:数组[1]] 我正在尝试删除前两个元素,执行一些操作,然后将它们再次插入到同一位置。
使用的 Delphi 版本:2007 你好, 我有一个 Tecord 数组 TInfo = Record Name : String; Price : Integer; end; var Info
我使用了基本的 gridster 代码,然后我声明了通过按钮添加和删除小部件的函数它工作正常但是当我将调整大小功能添加到上面的代码中时,它都不起作用(我的意思是调整大小,添加和删除小部件) 我的js代
title 323 323 323 title 323 323 323 title 323 323 323 JS $(document).keydown(function(e){
我是一名优秀的程序员,十分优秀!