Отключить location.href для определенного столбца - PullRequest
0 голосов
/ 19 мая 2019

У меня есть скрипт, который делает строки моего DataTable интерактивными.

Когда я нажимаю на строку, браузер перемещает меня по адресу: ./test.php?id=

Проблема в том, что у меня есть столбец, в котором есть флажок.Сценарий также перемещает меня к месту, когда я ставлю часы на флажок.

Я хочу сделать второй столбец (цель 1) не «кликабельным».Когда я нажимаю на второй столбец, сценарий не должен указывать мне местоположение: ./test.php?id=

Кто-то знает, как я могу это понять?

Вот мой код:

<script type="text/javascript">
 $( document ).ready(function() {
  $('grid1').DataTable({
   "bprocessing": true,
   "serverSide": true,
        "ajax": {
            "url": "response1.php",
            "type": "POST",
            "error": function(){
                $("#grid_processing").css("display","none");
            }
        },
        "columnDefs": [ 
            { "targets": 0, "render": function ( data, type, full, meta ) { return  ' '+data+' '} },
            { "targets": 1, "render": function ( data, type, full, meta ) { return  '<div class="checkbox c-checkbox"><label><input type="checkbox" class="sel1"/><span class="fa fa-check"></span></label></div>'} },
            { "targets": 2, "render": function ( data, type, full, meta ) { return  ' '+data+' '} },
            { "targets": 3, "render": function ( data, type, full, meta ) { return  ' '+data+' '} },
            { "targets": 4, "render": function ( data, type, full, meta ) { return  ' '+data+' '} },
            { "targets": 5, "render": function ( data, type, full, meta ) { return  ' '} }
        ]                                    
  });   
 });
</script>

Вот скрипт, который создает кликабельную строку:

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
  $(document).ready(function() {

    var table = $('#grid1').DataTable();    
    $('#grid1').on( "click", "td", function (e) {
      var rowIdx = table.row( this ).index();
      var sData = table.cells({ row: rowIdx, column: 5 }).data()[0];
      if (sData && sData.length) {
        location.href = './test.php?id=' + sData;
      }
    });

  });
</script>

1 Ответ

1 голос
/ 19 мая 2019

вы можете попробовать изменить селектор на что-то вроде

$('#grid1').on( "click", "td:not(:nth-child(2))", function (e) {
      var rowIdx = table.row( this ).index();
      var sData = table.cells({ row: rowIdx, column: 5 }).data()[0];
      if (sData && sData.length) {
        location.href = './test.php?id=' + sData;
      }
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...