вот моя настройка:< /p>
- у меня есть таблица, в которой каждую строку можно свернуть для просмотра дополнительной информации.
- я добавил фильтрацию js для фильтрации строк на основе определенных столбцов.
- фильтр работает нормально, но когда фильтр активен, я не могу открыть свернутые строки, чтобы просмотреть подробности.
- у меня есть приложение .blade.php в каталоге макетов, и я храню там скрипты и стили, которые обычно использую.
Код: Выделить всё
@extends('layouts.app')
@section('content')
[i][/i] Hide Filter
[i]
[/i] Filter
[i][/i] Clear Filters
Col 1
Col 2
Col 3
Col 4
Date Time
@foreach($fileData as $fileIndex => $file)
{{ $file['content']['col1'] }}
{{ $file['content']['col2'] }}
{{ $file['content']['col3'] }}
{{ $file['content']['col4']) }}
{{ date('Y-m-d H:i:s', $file['content']['col5']) }}
@if (!empty($file['content']['data']))
[i][/i] Close
{{ $subKeyIndex }}
{{ count($subKey) }} Record(s)
@endif
@endforeach
document.addEventListener('DOMContentLoaded', function() {
document.getElementById('applyFilters').addEventListener('click', function() {
const col1 = document.getElementById('col1').value.toLowerCase();
const col2 = document.getElementById('col2').value.toLowerCase();
const col3 = document.getElementById('col3').value.toLowerCase();
const col4 = document.getElementById('col4').value;
const topLevelRows = document.querySelectorAll('#tableBody > tr');
topLevelRows.forEach(row => {
const cols = row.getElementsByTagName('td');
const col1Text = cols[0] ? cols[0].innerText.toLowerCase() : '';
const col2Text = cols[1] ? cols[1].innerText.toLowerCase() : '';
const col3Text = cols[2] ? cols[2].innerText.toLowerCase() : '';
const col4Text = cols[4] ? cols[4].innerText.split(' ')[0] : '';
let match = true;
if (col1 && !col1Text.includes(col1)) match = false;
if (col2 && !col2Text.includes(col2)) match = false;
if (col3 && !col3Text.includes(col3)) match = false;
if (col4 && col4Text !== col4) match = false;
if (match) {
row.style.display = '';
} else {
row.style.display = 'none';
}
});
});
document.getElementById('clearFilters').addEventListener('click', function() {
document.getElementById('col1').value = '';
document.getElementById('col2').value = '';
document.getElementById('col3').value = '';
document.getElementById('col4').value = '';
const rows = document.querySelectorAll('#tableBody > tr');
rows.forEach(row => row.style.display = '');
});
document.getElementById('toggleFilterForm').addEventListener('click', function() {
const filterForm = document.getElementById('filterForm');
if (filterForm.style.display === 'none') {
filterForm.style.display = 'block';
this.innerHTML = '[i][/i] Hide Filter';
} else {
filterForm.style.display = 'none';
this.innerHTML = '[i][/i] Show Filter';
}
});
@endsection
Подробнее здесь: https://stackoverflow.com/questions/785 ... e-template