jquery - 重复时输入会失去值(value)

标签 jquery forms duplicates append input-field

我的表单字段有一个模板,我需要这些字段能够重复多次。

将此视为示例案例:

<a href='#' id="add">Add</a><br /><br />
<div id="box">
    <div id="template">
        <input type="text" name="template"></input>
        <br /><br />
    </div>
</div>

脚本:

var template = document.querySelector('#template');
var index = 1;

$('#template').remove();

$('body').on('click', '#add', function(e) {
    e.preventDefault();

    $('#box').append(template);

    var newInput = $('#box').html().replace(/template/g, 'input-'+index);

    $('#box').html(newInput);

    index++;
});

http://jsfiddle.net/bedex78/hkk7rx74/7/

为什么每当我在字段中输入一些值时,添加新值时该值就会消失(即单击“添加”按钮后)?

最佳答案

使用 $('#box').html(newInput); 时,您将替换所有 HTML - 包括所有输入和值。使用clone 的组合来复制模板,并使用append 添加到框中而不替换其内容:

$('body').on('click', '#add', function(e) {
    e.preventDefault();

    var wrapper = $("<div>");
    wrapper.append($(template).clone());

    var newInput = wrapper.html().replace(/template/g, 'input-'+index);

    $('#box').append(newInput);

    index++;
});

jsFiddle

注意:我在这里使用clone的原因是为了让你可以正确地修改新的盒子。您不必使用 html().replace,但可以使用 DOM 操作,例如wrapper.find("#template")

关于jquery - 重复时输入会失去值(value),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30500905/

相关文章:

javascript - JQuery 函数只能在函数内工作

javascript - Safari 与 Chrome 兼容性问题

mysql - mysql中查找重复项

javascript - Chrome 扩展中的 jQuery - 尽管正确包含但仍拒绝内联脚本

jquery - 如何使悬停时菜单点击消失

php - 表单数据向mySQL数据库提交空数据

javascript - 响应式复选框或 bool 值切换

javascript - 通过 Javascript 检查没有 id 和类的 radio

javascript - Javascript 是否支持集合?

sql - 合并重复的行以输出单行