You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

点击下拉框触发TypeError: popper is null错误排查求助

Fixing TypeError: popper is null for Your DataTable Dropdown

Hey there, let's break down why you're hitting this TypeError: popper is null error when clicking your dropdown, and how to fix it.

The Root Cause

You're mixing up two different components here: native HTML <select> elements and Bootstrap's Dropdown plugin.

Bootstrap's data-toggle="dropdown" attribute is designed to trigger a Bootstrap dropdown menu (the kind with a button and a .dropdown-menu container), not to enhance a native <select> element. When you add this attribute to your <select>, Bootstrap tries to initialize its dropdown logic—which expects a popper element to position the menu—but since there's no actual dropdown menu attached, it throws the "popper is null" error.

Solution 1: Stick with the Native Select (Simplest Fix)

If you just need a standard dropdown select input, remove the Bootstrap dropdown-specific attributes entirely. Here's your adjusted Twig code:

<select class="tabledit-input form-control" name="color"> 
    {% for item in items %} 
        <option value="{{ item.id }}" selected="">{{ item.Label }}</option> 
    {% endfor %} 
</select> 
<button type="button" class="btn btn-success validbtn">Valid</button>

By removing data-toggle="dropdown" and the dropdown-toggle class, you let the native <select> behave as intended—no Bootstrap dropdown logic will try to run, so the popper error disappears.

Solution 2: Use Bootstrap Dropdown Properly (If You Need Its Styling)

If you specifically want the Bootstrap dropdown visual style instead of a native select, you'll need to follow Bootstrap's correct dropdown structure. Here's how to adapt your code:

<div class="dropdown">
    <button class="tabledit-input form-control dropdown-toggle" type="button" data-toggle="dropdown" aria-expanded="false">
        Select a Color
    </button>
    <div class="dropdown-menu">
        {% for item in items %}
            <a class="dropdown-item" href="#" data-value="{{ item.id }}">{{ item.Label }}</a>
        {% endfor %}
    </div>
    <!-- Add a hidden input to hold the selected value for form submission -->
    <input type="hidden" name="color" id="selected-color">
</div>
<button type="button" class="btn btn-success validbtn">Valid</button>

Then add a bit of JavaScript to handle selection and update the hidden input (since Bootstrap dropdowns aren't form inputs by default):

// Use event delegation to handle dynamic DataTable rows
$(document).on('click', '.dropdown-item', function(e) {
    e.preventDefault();
    const selectedValue = $(this).data('value');
    const selectedText = $(this).text();
    
    // Update hidden input with selected value
    $('#selected-color').val(selectedValue);
    // Update dropdown button text to show selection
    $(this).closest('.dropdown').find('.dropdown-toggle').text(selectedText);
});

Extra Note for DataTable Context

Since this is inside a DataTable cell, remember that DataTable dynamically redraws rows (on pagination, search, etc.). Using event delegation (like $(document).on('click', '.dropdown-item', ...)) ensures your click handler works even for newly rendered rows.

内容的提问来源于stack exchange,提问作者C.Ramp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 22:17:27