美文网首页
form中动态添加dom元素

form中动态添加dom元素

作者: 夜色001 | 来源:发表于2021-02-08 10:25 被阅读0次

想实现一个效果,点击添加按钮,动态新增dom元素。准备使用jquery的append方法,但发现总是闪一下又回到原来的效果了。尝试了将近3个小时,第二天早上把新增的元素放到form外,居然好了。

image.png
上网又搜索了一下,原来
button在xhtml申明或者w3c浏览器下等价于type='submit',所以提交了表单
故只需要将按钮的type改为button即可
<button type="button" class="layui-btn layui-btn-normal btn-add">添加</button>

完整代码如下

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Layui</title>
    <meta name="renderer" content="webkit">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <link rel="stylesheet" href="../src/css/layui.css" media="all">
    <!-- 注意:如果你直接复制所有代码到本地,上述css路径需要改成你本地的 -->
    <style>
        .site-demo-button {
            padding: 20px
        }

        .layui-form-item .layui-input-inline {
            width: 400px;
        }
    </style>
</head>
<body>
<fieldset class="layui-elem-field layui-field-title" style="margin-top: 30px;">
    <legend>恭喜你:又学到一首新诗了!</legend>
</fieldset>
<br>
<br>
<form class="layui-form" action="" lay-filter="example">
    <div class="layui-form-item">
        <div class="layui-inline">
            <label class="layui-form-label">诗歌名称</label>
            <div class="layui-inline" style="width: 400px">
                <input type="text" class="layui-input" name="name">
            </div>
        </div>
    </div>
    <div class="layui-form-item">
        <div class="layui-inline">
            <label class="layui-form-label">朝代</label>
            <div class="layui-inline">
                <input type="text" class="layui-input" name="dynasty">
            </div>
        </div>
    </div>
    <div class="layui-form-item">
        <div class="layui-inline">
            <label class="layui-form-label">作者</label>
            <div class="layui-inline">
                <input type="text" class="layui-input" name="author">
            </div>
        </div>
    </div>
    <div class="layui-form-item">
        <label class="layui-form-label">正文</label>
        <div class="layui-inline" id="content">
            <div class="layui-inline">
                <input type="text" class="layui-input layui-input-inline" name="content[0]">
                <button type="button" class="layui-btn layui-btn-normal btn-add">添加</button>
            </div>
            <br>
            <div class="layui-inline">
                <input type="text" class="layui-input layui-input-inline" name="content[1]">
                <button type="button" class="layui-btn layui-btn-normal btn-add">添加</button>
                <button type="button" class="layui-btn layui-btn-danger btn-delete">删除</button>
            </div>
            <br>
            <div class="layui-inline">
                <input type="text" class="layui-input layui-input-inline" name="content[2]">
                <button type="button" class="layui-btn layui-btn-normal btn-add">添加</button>
                <button type="button" class="layui-btn layui-btn-danger btn-delete">删除</button>
            </div>
            <br>
        </div>
    </div>
    <div class="layui-form-item">
        <div class="layui-input-block">
            <button type="submit" class="layui-btn" lay-submit="" lay-filter="demo1" id="save">保存</button>
        </div>
    </div>
</form>


<script src="../src/layui.js" charset="utf-8"></script>
<script src="../template/js/jquery.3.2.1.min.js"></script>
<!-- 注意:如果你直接复制所有代码到本地,上述js路径需要改成你本地的 -->
<script>
    layui.use(['form', 'layedit', 'laydate'], function () {
        var form = layui.form
            , layer = layui.layer;
        //监听提交
        form.on('submit(demo1)', function (data) {
            layer.alert(JSON.stringify(data.field), {
                title: '最终的提交信息'
            })
            return false;
        });
    });

    $(function () {
        let btnAdd = $('#content .btn-add');
        btnAdd[0].addEventListener('click',function (e) {
            console.log($(this).parent().children(':first').val())
            $('#content').append("<div class=\"layui-inline\">\n" +
                "                <input type=\"text\" class=\"layui-input layui-input-inline\" name=\"content[3]\">\n" +
                "                <button type=\"button\" class=\"layui-btn layui-btn-normal btn-add\">添加</button>\n" +
                "                <button type=\"button\" class=\"layui-btn layui-btn-danger btn-delete\">删除</button>\n" +
                "            </div><br>")
        })
    });

</script>
</body>
</html>

相关文章

  • form中动态添加dom元素

    想实现一个效果,点击添加按钮,动态新增dom元素。准备使用jquery的append方法,但发现总是闪一下又回到原...

  • v-if和v-show的区别

    1.共同点 都是动态显示DOM元素 2.区别 (1)手段:v-if是动态的向DOM树内添加或者删除DOM元素;v-...

  • JavaScript Node节点

    通过DOM,JavaScript可以动态移除或添加HTML元素。 添加HTML节点 要创建新的 HTML 元素,需...

  • v-if 和 v-show 的异同与踩坑记录

    两者的同: (1)都是动态显示DOM元素 两者的异: (1)v-if是动态的向DOM树内添加或者删除DOM元素;v...

  • v-if和v-show的区别

    相同点: 这两个都可以动态的显示DOM元素 区别: 1. 手段 v-if是往结构中添加或者删除DOM元素 v-sh...

  • js 为动态添加的元素绑定事件

    想必大家都有遇到过,DOM动态添加的元素,你给它绑定的事件是不起作用的。目前有两种办法,为动态添加的元素绑定事件 ...

  • vue中v-if与v-show的区别

    1、v-show是在DOM元素中添加display属性,将DOM元素隐藏 2、v-if是直接将DOM元素删除。 总...

  • 表单知识

    14.1 表单的基础知识 获取form元素: 同其他DOM元素一样var form = document.getE...

  • 问题:动态生成的DOM无法绑定事件 2018-01-16-已解决

    动态生成的DOM无法绑定事件 (1)bind事件绑定只对dom中存在的元素有效,对于我们后来动态增加的元素是监测不...

  • 给dom元素添加类

    在封装公用组件的时候,经常会用到动态给元素添加样式思路:先判断这个dom有没有这个类,没有才给这个dom添加类 往...

网友评论

      本文标题:form中动态添加dom元素

      本文链接:https://www.haomeiwen.com/subject/ncyxxltx.html