feat(problemset): replace semantic-ui dropdown with native select for hardness filter

- Replace custom semantic-ui dropdown component with standard HTML select element
- Simplify JavaScript by using native event listener instead of semantic-ui dropdown API
- Remove unnecessary dropdown initialization and selection setting code
- Maintain same functionality while reducing complexity and dependency on semantic-ui
This commit is contained in:
2026-03-13 15:54:04 +08:00
parent 50692cd13a
commit aceaaeb272

View File

@@ -108,25 +108,21 @@
$selected_hardness = 0; $selected_hardness = 0;
} }
?> ?>
<div class="ui selection dropdown" id="hardness_dropdown" style="width: 120px; height: 28px; margin-left: 10px; vertical-align: middle;"> <select id="hardness_select" class="ui dropdown" style="width: 120px; height: 28px; margin-left: 10px; vertical-align: middle;">
<input type="hidden" id="hardness_value" value="<?php echo $selected_hardness; ?>"> <option value="0" <?php if ($selected_hardness == 0)
<i class="dropdown icon"></i> echo 'selected'; ?>>全部难度</option>
<div class="default text">难度</div>
<div class="menu">
<div class="item" data-value="0">全部难度</div>
<?php for ($h = 1; $h <= 8; $h++) { <?php for ($h = 1; $h <= 8; $h++) {
echo '<div class="item" data-value="' . $h . '">难度 ' . $h . '</div>'; echo '<option value="' . $h . '"' . ($selected_hardness == $h ? ' selected' : '') . '>难度 ' . $h . '</option>';
} ?> } ?>
</div> </select>
</div>
</div> </div>
</div> </div>
</div> </div>
<script> <script>
$(function () { $(function () {
$('#hardness_dropdown').dropdown({ document.getElementById('hardness_select').addEventListener('change', function () {
onChange: function (value) { var value = this.value;
var params = new URLSearchParams(window.location.search); var params = new URLSearchParams(window.location.search);
if (value == '0' || value === '') { if (value == '0' || value === '') {
params.delete('hardness'); params.delete('hardness');
@@ -134,13 +130,9 @@
params.set('hardness', value); params.set('hardness', value);
} }
params.delete('page'); params.delete('page');
window.location.href = '?' + params.toString(); var query = params.toString();
} window.location.href = query ? ('?' + query) : window.location.pathname;
}); });
var hv = $('#hardness_value').val();
if (hv && hv !== '0') {
$('#hardness_dropdown').dropdown('set selected', hv);
}
}); });
</script> </script>