java - 使用 javascript 动态添加重复(唯一 ID)表单 Div 元素

标签 java javascript spring jsp dojo

我有一个包含以下字段的表单:

<div class="row">
   <div class="field">
      <input class="" type="text" name="college" id="college"/>
   </div>

   <div class="field">
      <input class="" type="text" name="city" id="city"/>
   </div>

   <div class="field">
      <input class="" type="text" name="zip" id="zip"/>
   </div>
</div>
<input type="button" class="buttonWidth" id="btnAddressAdd" value="Add Worksite Addressess"/>

我有一个“添加额外地址”按钮,可以将 div“行”的另一个副本添加到页面。我需要将页面中的所有数据作为请求发送到 Controller 。如何编写一个脚本,在单击按钮时添加额外的 div 副本,并将唯一的 id 附加到每个新字段?

最佳答案

参见Dojo中的工作示例:http://jsfiddle.net/phusick/PeQCN/

普通 JavaScript 中使用相同的代码:http://jsfiddle.net/phusick/Rceua/

Dojo 版本采用 dojo/_base/lang::clone 正如 @Peter Rader 提到的:

// var lang    = require("dojo/_base/lang");
// var array   = require("dojo/_base/array");
// var query   = require("dojo/query");
// var domAttr = require("dojo/dom-attr");

var counter = 0;

function duplicate(/*Node*/sourceNode, /*Array*/attributesToBump) {
    counter++;
    var out = lang.clone(sourceNode);
    if (domAttr.has(out, "id")) { out.id = bump(out.id); }

    query("*", out).forEach(function(node) {
        array.forEach(attributesToBump, function(attribute) {
            if (domAttr.has(node, attribute)) {
                domAttr.set(node, attribute, bump(domAttr.get(node, attribute)));
            }        
        })
    });

    function bump(/*String*/str) {
        return str + "_" + counter;
    }

    return out;
}

如何使用上述duplicate功能:

// var dom          = require("dojo/dom");
// var domConstruct = require("dojo/dom-construct");

var sourceNode = dom.byId("fieldset");
var node = duplicate(sourceNode, ["id", "name", "placeholder"]);  
domConstruct.place(node, sourceNode, "after");       

关于java - 使用 javascript 动态添加重复(唯一 ID)表单 Div 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13878197/

相关文章:

java - 如果不手动处理,则继续传播 MouseWheelEvent

spring - 在 Spring AOP 中获取 session

java - 如何返回用户拥有的角色列表?

java - 使用自定义比较器进行 NatTable 排序

java - 用 Java 设计按钮(就像在 CSS 中一样)

javascript - href 向超链接添加额外信息

javascript - 如何使用 jQuery 根据文本选择 li a

javascript - Angularjs-我们如何通过动态ng-model名称以及任何更改过滤元素值来观察ng Repeat中的动态元素?

java - Spring 中的华夫饼自定义错误页面

java - 错误:NumberFormatException unable to parse '20'