Javascript,将值传递给新添加的表格行/单元格

Posted

技术标签:

【中文标题】Javascript,将值传递给新添加的表格行/单元格【英文标题】:Javascript, pass values to new added table row/cell 【发布时间】:2019-07-05 17:17:49 【问题描述】:

基本上这个请求的目标是有一个模态表,它添加新的表行/单元格并将“var OBGyneID = $(this).attr("id");”的值传递给第一个单元格和值“var billing_id = newID;”每当添加新行/单元格时,到第二个单元格。寻求您的帮助,谢谢!

*我的模式*

    <div id="myModal" class="modal fade card new-contact myModal" role="dialog">
        <div class="modal-dialog modal-lg">
            <div class="modal-content">

                <div class="card profile">
                    <div class="profile__img">
                        <img src="img/profile2.jpg" >
                        <a href="#" class="zmdi zmdi-camera profile__img__edit"></a>
                    </div>
                    <div class="profile__info">                                         
                        <h3 style="text-transform:capitalize;" id="pxname" name="pxname"></h3>
                        <ul class="icon-list">
                            <li>LAST <p name="consdates" id="consdates"></p></li>
                            <li>Last visit: </li>
                            <li><i class="zmdi zmdi-twitter"></i> @mallinda-hollaway</li>
                        </ul>
                    </div>
                </div>              
                <div>
                    <div class="table-responsive">
                        <table id="billingTable" class="table table-inverse table-sm table-hover table-condensed" style="font-size:120%">
                            <thead> 
                                <th>OBDYID</th>
                                <th>CK</th>
                                <th>PROCEEDURE</th>
                                <th>AMOUNT</th>
                            </thead>
                            <tbody id="billing_body" style="text-transform:capitalize;">    
                                <form method="get" id="insert_form">                
                                    <tr>
                                        <td ><input type="text" style="width:100%;" id="OBGyneID" name="OBGyneID"></td>
                                        <td ><input type="text" style="width:100%;" id="AssessMentEntryID" name="AssessMentEntryID"></td>
                                        <td ><input type="text" style="width:100%;" class="ExamDesc" type="text" id="ExamDesc" name="ExamDesc"></td>
                                        <td ><input type="text" style="width:100%;" class="Price" type="text" id="Price" name="Price"></td>                              
                                    </tr>
                                </form>
                            </tbody>
                        </table>
                    </div>
                </div>
                <div class="modal-footer">
                    <input type="submit" name="insert" id="insert" value="Insert" class="btn btn-success" />
                    <input type="submit" id="addRow" value="add" name="add" class="btn btn-info" />             
                    <button type="button" class="btn btn-link" data-dismiss="modal">Close</button>
                </div>
            </div>
        </div>
    </div>

* MY JS 添加新行/单元格*

        $(document).ready(function () 
            $("#addRow").click(function () 
                $("#billingTable").append('<tr><td ><input type="text" style="width:100%;" id="OBGyneID" name="OBGyneID" ></td>'+
                            '<td ><input type="text" style="width:100%;" id="AssessMentEntryID" name="AssessMentEntryID"></td>'+
                            '<td ><input type="text" style="width:100%;" class="ExamDesc" type="text" id="ExamDesc" name="ExamDesc"></td>'+
                            '<td ><input type="text" style="width:100%;" class="Price" type="text" id="Price" name="Price"></td></tr>');

                jQuery(".ExamDesc").autocomplete(
                    source: 'php/billingentry.php'
                ); 
            );
        );

* 将值传递给模态 * 这只会在模态弹出时传递值,但在添加新行/单元格时无法传递值。

            $(document).on('click', '.billing_data', function()  
            var OBGyneID = $(this).attr("id");  
            var newID = new Date().getUTCMilliseconds();
            var billing_id = newID;
            $.ajax(  
                    url:"php/billing_fetch.php",  
                    method:"GET",  
                    data:OBGyneID: OBGyneID,  
                    dataType:"json",  
                    success:function(data)
                        $('#AssessMentEntryID').val(data.AssessMentEntryID); 
                        $('#ExamDesc').val(data.ExamDesc);  
                        $('#Price').val(data.Price);  

                        $('#pxservice').val(data.pxservice);
                        $('#companyname').val(data.companyname);
                        $('#chiefcomplain').val(data.chiefcomplain);

                        document.getElementById("OBGyneID").value = OBGyneID;
                        document.getElementById("AssessMentEntryID").value = billing_id;
                        document.getElementById("pxname").innerhtml = (data.fname)+" "+(data.mi)+" "+(data.lname);
                        document.getElementById("consdates").innerHTML = (data.obgyneDate);
                        $('#myModal').modal('show');
                      
            );  
        );

【问题讨论】:

【参考方案1】:

每当您在计费表中添加新的 HTML 行时,您都在为 OBGyneID、AssessMentEntryID、ExamDesc 和 Price 使用相同的 ID。如果你添加了两行,DOM 将无法正常工作,因为那里有多个相同的 id。所以我建议你用类替换它并使用类名来设置值。检查以下代码:

$(document).ready(function () 
    $("#addRow").click(function () 
        $("#billingTable").append('<tr><td ><input type="text" style="width:100%;" class="OBGyneID" name="OBGyneID" ></td>'+
                    '<td ><input type="text" style="width:100%;" class="AssessMentEntryID" name="AssessMentEntryID"></td>'+
                    '<td ><input type="text" style="width:100%;" class="ExamDesc" type="text" name="ExamDesc"></td>'+
                    '<td ><input type="text" style="width:100%;" class="Price" type="text" name="Price"></td></tr>');

        jQuery(".ExamDesc").autocomplete(
            source: 'php/billingentry.php'
        ); 
    );
);

您已经添加了 HTML 代码,然后您可以找到 billingTable 的最后一行并可以在其中设置值。检查以下代码:

$(document).on('click', '.billing_data', function()  
    var OBGyneID = $(this).attr("id");  
    var newID = new Date().getUTCMilliseconds();
    var billing_id = newID;
    $.ajax(  
        url:"php/billing_fetch.php",  
        method:"GET",  
        data:OBGyneID: OBGyneID,  
        dataType:"json",  
        success:function(data)

            $("#billingTable").find(".AssessMentEntryID:last").val(data.AssessMentEntryID);
            $("#billingTable").find(".ExamDesc:last").val(data.ExamDesc);
            $("#Price").find(".Price:last").val(data.Price);
            $("#billingTable").find(".consdates:last").html(data.obgyneDate);
            //and so on
            $('#myModal').modal('show');
          
    );  
);

另外,我建议您使用 HTMl 模板标签为行进行克隆。不推荐在 JS 中附加 HTML。希望它可以帮助你。

【讨论】:

感谢您的回复,非常感谢。我尝试复制您的代码,但没有任何效果。每当我添加新行时,“OBGyneID”和“billing_id”的值都不会反​​映在表中。 您能否创建一个完整代码的小提琴或钢笔,以便我们更好地检查?正如我现在所看到的,您只是在 addrow 按钮单击时添加空白行。您正在通过 ajax 调用设置值 billing_data 类单击。不确定您的要求。 我删除了一些不适用的代码,这里是小提琴:jsfiddle.net/mjelid2011/q2sc7gL9/101 但它不起作用。也许我缺少一些插件。请检查,谢谢。

以上是关于Javascript,将值传递给新添加的表格行/单元格的主要内容,如果未能解决你的问题,请参考以下文章

Javascript 中的对象说明符

如何将值从javascript传递到iOS UIWebView

从简单模式窗口将值从 asp.net 复选框或文本框传递到服务器时遇到问题

传递给新变量对象的 JavaScript 变量 POSTing as undefined to another page

无法通过从两个不同子例程传递给新子例程的值来执行计算:Perl

在 setState 不起作用后,Reactjs 将值作为道具传递