简体   繁体   English

如何在jquery中动态添加表单元素?

[英]How to dynamically add form elements in jquery?

I'm trying to created a dynamic form in rails with a little bit of javascript I have a problem I only get one row in the output when using pry apparently it's because I have the same params for every field input since I use jQuery.clone, maybe someone has struggled with something similar can share some knowledge, how to dynamically add index to params in this form with javascript?我正在尝试在带有一点 javascript 的轨道中创建一个动态表单我有一个问题我在使用 pry 时只在 output 中得到一行,显然这是因为自从我使用 ZF590B4FDA2C30BE28DDC3 以来,每个字段输入都有相同的参数。 ,也许有人在类似的事情上苦苦挣扎可以分享一些知识,如何使用 javascript 以这种形式为参数动态添加索引?

@extends('Admin.master')

@section('content')

    <div class="p-5">
        <h3><i class="fas fa-cog ml-2"></i>Setting</h3><hr>
        <form action="{{ route('settings.update', $setting->id) }}" method="POST" >
            @csrf
            @method('PUT')
            <div id="showDynamic">

            </div>
        </form>
    </div>

@endsection

@section('script')
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>

    <script>
        $(document).ready(function(){
            let count = 1;
            $('.add').click(function(){
                count++;
                dynamic(count);
            });
            dynamic(count);
            function dynamic(number) {
                var html = '' +
                    '<div class="row">\n' +
                    '<div class="col-md-4">\n' +
                    '<input class="form-control" placeholder="Name">\n' +
                    '</div>\n' +
                    '<div class="col-md-4">\n' +
                    '<input class="form-control" placeholder="Link">\n' +
                    '</div>\n' +
                    '<div class="col-md-2">\n' +
                    '<a class="btn btn-primary" id="add">Add</a>\n' +
                    '<a class="btn btn-danger" id="delete">Delete</a>\n' +
                    '</div>\n' +
                    '</div>';
                $('#showDynamic').append(html);
            }
        });
    </script>
@endsection
  • 1st id must be unique.. So change id="add" and id="delete" to classes class="btn btn-primary add"第一个id 必须是唯一的。所以将id="add"id="delete"更改为 classes class="btn btn-primary add"

  • 2nd event-binding-on-dynamically-created-elements After changing the id to class use $(document).on('click', '.add', function(){ //code here }) 2nd event-binding-on-dynamically-created-elements将 id 更改为 class 后使用$(document).on('click', '.add', function(){ //code here })

Your code should be你的代码应该是

<script>
        $(document).ready(function(){
            let count = 1;
            $(document).on('click' , '.add' , function(){
                count++;
                dynamic(count);
            });
            dynamic(count);
            function dynamic(number) {
                var html = '' +
                    '<div class="row">\n' +
                    '<div class="col-md-4">\n' +
                    '<input class="form-control" placeholder="Name">\n' +
                    '</div>\n' +
                    '<div class="col-md-4">\n' +
                    '<input class="form-control" placeholder="Link">\n' +
                    '</div>\n' +
                    '<div class="col-md-2">\n' +
                    '<a class="btn btn-primary add">Add</a>\n' +
                    '<a class="btn btn-danger delete">Delete</a>\n' +
                    '</div>\n' +
                    '</div>';
                $('#showDynamic').append(html);
            }
        });
    </script>

 $(document).ready(function(){ let count = 1; $(document).on('click', '.add', function(){ count++; dynamic(count); }); dynamic(count); function dynamic(number) { var html = '' + '<div class="row">\n' + '<div class="col-md-4">\n' + '<input class="form-control" placeholder="Name">\n' + '</div>\n' + '<div class="col-md-4">\n' + '<input class="form-control" placeholder="Link">\n' + '</div>\n' + '<div class="col-md-2">\n' + '<a class="btn btn-primary add">Add</a>\n' + '<a class="btn btn-danger delete">Delete</a>\n' + '</div>\n' + '</div>'; $('#showDynamic').append(html); } });
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div id="showDynamic"></div>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM