【问题标题】:javascript problem on the close button | how i can solve?关闭按钮上的 javascript 问题 |我该如何解决?
【发布时间】:2020-05-17 00:58:51
【问题描述】:

这里的 javascript 用于创建多个表字段,通过单击一加按钮多次打开它现在工作正常我的问题是当我单击关闭按钮时它会被删除但不是,当我在 java 脚本中使用 $(this).parent().parent().remove 时,当我使用 $('tbody').remove()$('tbody tr').remove()$('tbody tr td').remove() 然后是整个表及其字段时它不起作用已删除....请让

me 认识任何人.. 我怎么能解决它???

$('#addRow').on('click', function() {
    addRow();
});

function addRow() {

    var td1 = '<td>' +
        '<label class="control-label">Class / Field :</label>' +
        '</td>' +
        '<td>' +
        '<input class="form-control" id="idSource" type="text" name="class[]" />' +
        '</td>' +
        '<td>' +
        '<label class="control-label">University :</label>' +
        '</td>' +
        '<td>' +
        '<input class="form-control" id="idDestination" type="text" name="university[]" />' +
        '</td>';
    var td2 = '<td>' +
        '<label class="control-label">Institute / Collage Name :</label>' +
        '</td>' +
        '<td>' +
        '<input class="form-control" id="idSource" type="text" name="institute_name[]" />' +
        '</td>' +
        '<td>' +
        '<label class="control-label"> Percentage / GPA / CGPA : </label>' +
        '</td>' +
        '<td>' +
        '<input class="form-control" id="idDestination" type="text" placeholder="00.00" name="per[]"/>' +
        '</td>';
    var td3 = '<td>' +
        '<label class="control-label">Start Date :</label>' +
        '</td>' +
        '<td>' +
        '<input class="form-control" id="idSource" type="date" name="sdate[]" />' +
        '</td>' +
        '<td>' +
        '<label class="control-label">End Date:</label>' +
        '</td>' +
        '<td>' +
        '<input class="form-control" id="idDestination" type="date" name="edate[]" />' +
        '</td>';
    var td4 = '<td><a class="btn btn-danger" id="remove"><i class="fa fa-remove"></i></a></td>';

    var td5 = '<td>' +
        '<b>&nbsp;</a>' +
        '</td>' +
        ' <td>' +
        '<b>&nbsp;</b>' +
        '</td>' +
        ' <td>' +
        '<b>&nbsp;</b>' +
        '</td>' +
        ' <td style="text-align: right;">' +
        '<b><a class="btn btn-danger" id="remove"><i class="fa fa-remove"></i></a></b>' +
        '</td>';

    $('tbody').append('<tr>' + td1 + '</tr>' + '<tr>' + td2 + '</tr>' + '<tr>' + td3 + '</tr>' + '<tr>' + td5 + '</tr>');
};

$('tbody').on('click', '#remove', function() {
    var last = $('tbody').length;
    if (last == 1) {
        alert('You Can Not Remove Last');
    } else {
        if (confirm("Do you want to delete this row?")) {
            $(this).parent().parent().remove();
            $('tbody').remove();
        }
    }
});

刀片文件

 <div class="col-md-12 field-wrapper" id="wrapper">
                        <div class="panel panel-footer">
                        <form id="allInputsFormValidation" class="form-horizontal" action="{{route('create_education')}}" method="post">
                                @csrf
                            <table class="table table-striped col-md-12">
                                <thead>
                                    <tr>

                                        <td><b>
                                            <a class="btn btn-success" id="addRow"><i class="fa fa-plus"></i></a>
                                        </td>
                                        <td><b>&nbsp;</b></td>
                                        <td><b>&nbsp;</b></td>
                                        <td><b>

                                        </td>

                                    </tr>
                                </thead>
                                <div class="form-group column-sizing">
                                <tbody id="tbody">
                                    <tr>
                                        <td>
                                            <label class="control-label">Class / Field :</label>
                                        </td>
                                        <td>
                                            <input class="form-control" type="text" name="class[]" />

                                        </td>
                                        <td>
                                            <label class="control-label">University :</label>
                                        </td>
                                        <td>
                                            <input class="form-control" type="text" name="university[]" />
                                        </td>                               
                                    </tr>
                                    <tr>
                                        <td>
                                            <label class="control-label">Institute / Collage Name :</label>
                                        </td>
                                        <td>
                                            <input class="form-control" type="text" name="institute_name[]" />
                                        </td>
                                        <td>
                                            <label class="control-label">Percentage / GPA / CGPA / SPI :</label>
                                        </td>
                                        <td>
                                            <input class="form-control" type="text" name="per[]" />
                                        </td>
                                    </tr>
                                    <tr>
                                        <td>
                                            <label class="control-label">Start Date :</label>
                                        </td>
                                        <td>
                                            <input class="form-control" type="date" name="sdate[]" />
                                        </td>
                                        <td>
                                            <label class="control-label">End Date :</label>
                                        </td>
                                        <td>
                                            <input class="form-control" type="date" name="edate[]" />
                                        </td>

                                    </tr>
                                     <tr>

                                         <td><b>&nbsp;</b></td>
                                        <td><b>&nbsp;</b></td>
                                        <td><b>&nbsp;</b></td>
                                        <td style="text-align: right;"><b>
                                            <a class="btn btn-danger" id="remove"><i class="fa fa-remove"></i></a></b>
                                        </td>

                                    </tr>

                                </tbody>
                                </div>
                            </table>  
                            <div class="card-footer" style="margin-left: 90%">
                                <button type="submit" class="btn btn-info btn-fill">Submit</button>
                            </div>  
                        </form>
                        </div>
                     </div> 

【问题讨论】:

  • 你必须支持哪种浏览器?
  • 谷歌浏览器..
  • 您的 html 结构非常非常糟糕...您必须对其进行更改以在运行时轻松添加/删除行...并尝试尽可能少地使用表格
  • 为什么很糟糕??对我来说这很容易,但我无法制作一个相同的 javascript 结构,但只有一些变化,而且它是工作条件,所以为什么它不工作???
  • 首先,修复你的HTML代码,你不应该有重复的ID!停止使用 '...' + '...' 只需使用 blackslack 并在那里添加所有代码,它的可读性会更高!最简单的方法是有一个计数器,然后将其分配给每个td,可能像:&lt;td data-block="${total_bocks}"&gt; 并在按钮中添加一个&lt;a class="btn btn-danger" class="btn-remove" data-block="${total_bocks}"&gt;...,然后在点击时附加一个.btn-remove 事件,阅读data-block 和删除所有带有 $("td[data-block=' + id + ']).remove() 的 td

标签: javascript jquery laravel-6


【解决方案1】:

这是新方法,我希望它能满足您的需求。

按下下方的“运行代码sn-p”按钮

$('#data').on('click', '.remove-record', ({currentTarget: elRemove}) => {
  var isLastRecord = $('.data-record').length === 1;
  if (isLastRecord) {
    alert('You Can Not Remove Last');
  } else if (confirm('Do you want to delete this row?')) {
    $(elRemove).closest('.data-record').remove();
  }
});

$('#add-new-record').on('click', () => $('#data').append(`
  <table class="data-record table table-striped col-md-12">
    <tr>
      <td><label class="control-label">Class / Field :</label></td>
      <td><input class="form-control" id="idSource" type="text" name="class[]" /></td>
      <td><label class="control-label">University :</label></td>
      <td><input class="form-control" id="idDestination" type="text" name="university[]" /></td>
    </tr>
    <tr>
      <td><label class="control-label">Institute / Collage Name :</label></td>
      <td><input class="form-control" id="idSource" type="text" name="institute_name[]" /></td>
      <td><label class="control-label"> Percentage / GPA / CGPA : </label></td>
      <td><input class="form-control" id="idDestination" type="text" placeholder="00.00" name="per[]" /></td>
    </tr>
    <tr>
      <td><label class="control-label">Start Date :</label></td>
      <td><input class="form-control" id="idSource" type="date" name="sdate[]" /></td>
      <td><label class="control-label">End Date:</label></td>
      <td><input class="form-control" id="idDestination" type="date" name="edate[]" /></td>
    </tr>
    <tr>
      <td><b>&nbsp;</a></td>
      <td><b>&nbsp;</b></td>
      <td><b>&nbsp;</b></td>
      <td style="text-align: right;"><b><a class="remove-record btn btn-danger"><i class="fa fa-remove"></i></a></b>
      </td>
    </tr>
  </table>
`));
<!-- required modules -->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.5.0/css/bootstrap.min.css" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<!-- add new row button -->
<div>
  <button class="btn btn-success" id="add-new-record">
    <i class="fa fa-plus"></i>
  </button>
</div>

<!-- here goes data -->
<div id="data"></div>

想法和建议

正如您现在所看到的,您没有初始空记录(行) - 我认为 DRYKISS 原则更好。

DRY 代表“不要重复自己”
“保持超级简单”或“保持简单愚蠢”的 KISS - 你可以选择你最喜欢的)

【讨论】:

  • 如果您愿意做所有这些工作:id="remove" -> 重复的 html 标识符...也许更改为 class="btn-remove" ? ??
  • @java-man-script 我正在使用您的代码,但是当我运行您的代码时,在我使用它之前它会显示错误..错误如数据丢失..
  • 检查了 - 尝试按下“运行代码 sn-p”按钮
  • 它已经运行,但是当我点击更多字段的加号按钮时,错误是一样的。我把第一个字段设置为默认值...
  • 它在我提供的实时示例中运行 - 您应该尝试弄清楚您与这个实时示例有什么不同。为了帮助你 - 你能提供出现的错误吗?
猜你喜欢
  • 2021-07-31
  • 2019-12-25
  • 2017-10-28
  • 2020-10-03
  • 1970-01-01
  • 2011-09-09
  • 1970-01-01
  • 1970-01-01
  • 2015-03-23
相关资源
最近更新 更多