【问题标题】:How to make search work in javascript in laravel如何在 laravel 中的 javascript 中进行搜索
【发布时间】:2019-08-28 15:43:20
【问题描述】:

我在如何使表格搜索在 javascript 代码中工作时遇到问题。我有一个不同的场景。我通过 ajax 获取数据所以我需要在 javascript 而不是 html 中添加表线程。但现在我想搜索表格。我还编写了用于搜索的代码,但这仅在我的线程位于 html 中时才有效。下面是我的代码,它将为您提供清晰的视图。尝试在编辑器中阅读它,因为它更复杂:)。这是对每一列的搜索

//Javascript

$(document).ready(function() {

  $(document).ready(function() {
    $.ajaxSetup({
      headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
      }
    });
  });

  $('select[name="class_id"]').on('change', function() {
    var classID = $(this).val();
    if (classID) {

      $.ajax({

        url: '/attendance/ajax/' + classID,
        type: "GET",
        dataType: "json",
        success: function(data) {

          var markup = '';
          markup += '<tr><th style="width: 2%" class="align-middle text-center"><input type="checkbox" id="options"></th><th style="width: 2%" class="align-middle text-center">#</th> <th style="width: 15%" class="text-center">Student ID<input type="text" class="form-control" disabled></th> <th style="width: 15%" class="text-center">Student Name<input type="text" class="form-control" disabled></th> <th style="width: 15%" class="text-center">Attendance<input type="text" class="form-control" disabled></th> <th style="width: 15%" class="text-center">Date<input type="text" class="form-control" disabled></th> <th style="width: 15%;" class="align-middle text-center">Actions</th> <tr>';

          $.each(data, function(key, value) {

            markup += '<tr> <td><input class="checkBoxes" type="checkbox" name="checkBoxArray[]"></td> <td><input type="hidden" value="' + value.id + '" name="id[]">' + value.id + '</td> <td><input type="hidden" value="' + value.student_id + '" name="student_id[]">' + value.student_id + '</td> <td><input type="hidden" value="' + value.first_name + '" name="first_name[]"><input type="hidden" value="' + value.last_name + '" name="last_name[]">' + value.first_name + ' ' + value.last_name + '<td><input type="hidden" value="' + value.attendance + '" name="attendance[]">' + value.attendance + '</td>' + '<td><input type="hidden" value="' + value.created_at + '" name="created_at[]">' + value.created_at + '</td>' + '<td style=" width=12%" class="text-center"> <a><button title="Edit" class="btn btn-outline-primary"><span class="fas fa-pencil-alt"></span></button></a> </td>' + '</td> <tr>';

          });
          $('table[id="studentsData"]').html(markup);
        }
      });
    }
  });
});

//搜索代码

 $('body').on('click', '.filterable .btn-filter', function() {
                var $panel = $(this).parents('.filterable'),
                        $filters = $panel.find('.filters input'),
                        $tbody = $panel.find('.table tbody');
                if ($filters.prop('disabled') == true) {
                    $filters.prop('disabled', false);
                    $filters.first().focus();
                } else {
                    $filters.val('').prop('disabled', true);
                    $tbody.find('.no-result').remove();
                    $tbody.find('tr').show();
                }
            });

        $('body').on('input', '.filterable .filters input', function(e) {
                /* Ignore tab key */
                var code = e.keyCode || e.which;
                if (code == '9') return;
                /* Useful DOM data and selectors */
                var $input = $(this),
                        inputContent = $input.val().toLowerCase(),
                        $panel = $input.parents('.filterable'),
                        column = $panel.find('.filters th').index($input.parents('th')),
                        $table = $panel.find('.table'),
                        $rows = $table.find('tbody tr');
                /* Dirtiest filter function ever ;) */
                var $filteredRows = $rows.filter(function () {
                    var value = $(this).find('td').eq(column).text().toLowerCase();
                    return value.indexOf(inputContent) === -1;
                });
                /* Clean previous no-result if exist */
                $table.find('tbody .no-result').remove();
                /* Show all rows, hide filtered ones (never do that outside of a demo ! xD) */
                $rows.show();
                $filteredRows.hide();
                /* Prepend no-result row if all rows are filtered */
                if ($filteredRows.length === $rows.length) {
                    $table.find('tbody').prepend($('<tr class="no-result text-center"><td colspan="' + $table.find('.filters th').length + '">No Result Found</td></tr>'));
                }
            });

//错误

【问题讨论】:

  • 这不是完全不同的情况。他的价值观有问题。而且我在 javascript 搜索中遇到问题,因为我的表头在 javascript 中无法正常工作。我这样做是因为我使用 ajax 来获取数据,如您所见
  • 查看同一问题中的 cmets。
  • 不,它没有帮助

标签: javascript laravel


【解决方案1】:

Working sample.

尝试使用事件委托on() 代替:

var body = $('body');

body.on('click', '.filterable .btn-filter', function() {
    alert('----1');
});

body.on('input', '.filterable .filters input', function(e) {
    alert('----2');
});

【讨论】:

  • 先生,它给了我重复的 Jquery 选择器
  • 编辑器中的错误和浏览器中的相同结果
  • 用你最新版本的JS代码和错误截图更新问题。
  • 这不是错误,只是警告,可以通过在顶部声明正文来绕过检查我的更新答案。
  • 同样的结果。让我清楚我的搜索按钮在 html
猜你喜欢
  • 1970-01-01
  • 2020-02-01
  • 1970-01-01
  • 2018-04-24
  • 1970-01-01
  • 2014-07-02
  • 2015-01-22
  • 2018-03-23
  • 1970-01-01
相关资源
最近更新 更多