首页 > 解决方案 > 如何使用模态和 Jquery 将文件上传到表?

问题描述

我有一个动态表,允许人们在单击按钮时在模态中上传图像、他们的姓名和姓氏。当我尝试上传图像时,我的表格在图像的位置显示“未定义”。如何让表格显示图像?

我尝试过使用 .val()、.attr('src')。我是 jquery 的新手,所以我确定我在这里犯了一个菜鸟错误,但我没有想法,似乎在任何地方都找不到类似的问题。

$(document).ready(function () {
    $("#save_btn").click(function () {
        let image = $("#Image").attr('');
        let name = $("#Name").val();
        let surname = $("#Surname").val();
        $('#myTable').append(
            '<tr>' +
            '<td>' + image + '</td>' +
            '<td>' + name + '</td>' +
            '<td>' + surname + '</td>' +
            '<td> <button id="edit" class="btn btn-sm material-icons" style="color: green"> create </button> </td>' +
            '<td><button id="delete" class="btn btn-sm material-icons" style="color: red">delete</button></td>' +
            '</tr>'
        );
    });
    
    });
<!doctype html>
<html lang="en">
<head>
    <!-- Required meta tags -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <link href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
    <link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
    <title>Homework 2</title>
</head>
<body>
<div class="container">
    <div class="row">
        <div class="col">
            <button type="button" class="btn btn-primary btn-lg btn-block" data-toggle="modal" data-target="#myModal">Add to Table</button>
        </div>
    </div>

    <table id="myTable" class="table table-dark">
        <thead>
        <tr>
            <th scope="col">Image</th>
            <th scope="col">Name</th>
            <th scope="col">Surname</th>
            <th scope="col">Edit</th>
            <th scope="col">Delete</th>
        </tr>
        </thead>
        <tbody>
        </tbody>
    </table>
</div>


<!-- The Modal -->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
    <div class="modal-dialog" role="document">
        <div class="modal-content">
            <div class="modal-header">
                <h5 class="modal-title" id="exampleModalLabel">Add Data to Table</h5>
                <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                    <span aria-hidden="true">&times;</span>
                </button>
            </div>
            <div class="modal-body">
                <form>
                    <div class="form-group">
                        <label id="Image_input" for="Image" class="col-form-label">Image:</label>
                        <input type="file" class="form-control" id="Image">
                    </div>
                    <div class="form-group">
                        <label id="name_input" for="Name" class="col-form-label">Name:</label>
                        <input type="text" class="form-control" id="Name">
                    </div>
                    <div class="form-group">
                        <label id="surname_input" for="Surname" class="col-form-label">Surname:</label>
                        <input type="text" class="form-control" id="Surname">
                    </div>
                </form>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
                <button id="save_btn" type="button" class="btn btn-primary" data-dismiss="modal">Save</button>
            </div>
        </div>
    </div>
</div>


<!-- Optional JavaScript -->
<!-- jQuery first, then Popper.js, then Bootstrap JS -->

<script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script>
<script src="js/index.js"></script>
</body>
</html>

我对附加功能进行了更改。我加了这个...

"<td>" + "<img id='table_image' alt='' src='" + './images/' + image + "' > " + "</td>" +

标签: jqueryhtmlbootstrap-4

解决方案


$(document).ready(function () {

     $('input[type="file"]').change(function(e){
               fileName=URL.createObjectURL(e.target.files[0]);
            });
        $("#save_btn").click(function () {
            //let image = $("#Image").attr('src',fileName);
            let name = $("#Name").val();
            let surname = $("#Surname").val();
            $('#myTable').append(
                '<tr>' +
                '<td><img src="' + fileName + '" width="150" height="150"></td>' +
                '<td>' + name + '</td>' +
                '<td>' + surname + '</td>' +
                '<td> <button id="edit" class="btn btn-sm material-icons" style="color: green"> create </button> </td>' +
                '<td><button id="delete" class="btn btn-sm material-icons" style="color: red">delete</button></td>' +
                '</tr>'
            );
        });
        
        });
 <!doctype html>
    <html lang="en">
    <head>
        <!-- Required meta tags -->
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
        <link href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
        <link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
        <title>Homework 2</title>
    </head>
    <body>
    <div class="container">
        <div class="row">
            <div class="col">
                <button type="button" class="btn btn-primary btn-lg btn-block" data-toggle="modal" data-target="#myModal">Add to Table</button>
            </div>
        </div>

        <table id="myTable" class="table table-dark">
            <thead>
            <tr>
                <th scope="col">Image</th>
                <th scope="col">Name</th>
                <th scope="col">Surname</th>
                <th scope="col">Edit</th>
                <th scope="col">Delete</th>
            </tr>
            </thead>
            <tbody>
            </tbody>
        </table>
    </div>


    <!-- The Modal -->
    <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
        <div class="modal-dialog" role="document">
            <div class="modal-content">
                <div class="modal-header">
                    <h5 class="modal-title" id="exampleModalLabel">Add Data to Table</h5>
                    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                        <span aria-hidden="true">&times;</span>
                    </button>
                </div>
                <div class="modal-body">
                    <form>
                        <div class="form-group">
                            <label id="Image_input" for="Image" class="col-form-label">Image:</label>
                            <input type="file" class="form-control" id="Image">
                        </div>
                        <div class="form-group">
                            <label id="name_input" for="Name" class="col-form-label">Name:</label>
                            <input type="text" class="form-control" id="Name">
                        </div>
                        <div class="form-group">
                            <label id="surname_input" for="Surname" class="col-form-label">Surname:</label>
                            <input type="text" class="form-control" id="Surname">
                        </div>
                    </form>
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
                    <button id="save_btn" type="button" class="btn btn-primary" data-dismiss="modal">Save</button>
                </div>
            </div>
        </div>
    </div>


    <!-- Optional JavaScript -->
    <!-- jQuery first, then Popper.js, then Bootstrap JS -->

    <script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script>
    <script src="js/index.js"></script>
    </body>
    </html>


推荐阅读