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

Semantic表单下拉框获取data-value失败求助

Hey there! Let's troubleshoot this Semantic Dropdown issue together — I've run into similar head-scratchers before, so here are the most common fixes to get that data-value showing up in your console:

1. Make sure your JavaScript runs after the dropdown is fully rendered

Jinja2 renders content server-side, so if your JS fires before the DOM is ready, the dropdown elements won't exist yet. Wrap your code in a DOM-ready handler, and don't forget to initialize the Semantic Dropdown component (it won't work out of the box without this):

$(document).ready(function() {
  // First initialize the dropdown
  $('.ui.dropdown').dropdown({
    // Use Semantic's built-in onChange callback to grab the value
    onChange: function(selectedValue, selectedText, $selectedItem) {
      const setID = $selectedItem.data('value');
      console.log(setID); // This should log your data-value now
    }
  });
});

2. Double-check your Jinja2-generated HTML structure

A misformatted dropdown can break Semantic's functionality. Make sure your rendered HTML looks like this (verify via browser dev tools):

<div class="ui dropdown">
  <input type="hidden" name="set"> <!-- Required for Semantic dropdowns -->
  <i class="dropdown icon"></i>
  <div class="default text">Select a set</div>
  <div class="menu">
    {% for set in sets %}
      <!-- Ensure data-value is correctly bound to the .item element -->
      <div class="item" data-value="{{ set.id }}">{{ set.name }}</div>
    {% endfor %}
  </div>
</div>

Watch out for typos (like data-valuee instead of data-value) or missing required elements (like the hidden input).

3. Verify you're accessing data-value from the right element

If you're using a custom event listener instead of Semantic's callback, don't try to grab data-value from the dropdown container itself — it lives on the selected .item child:

$(document).ready(function() {
  $('.ui.dropdown').dropdown(); // Still need to initialize first!
  
  // Listen for the dropdown's change event
  $('.ui.dropdown').on('change', function() {
    const selectedItem = $(this).find('.item.active.selected');
    const setID = selectedItem.data('value');
    console.log(setID);
  });
});

4. Confirm script loading order

Semantic UI depends on jQuery, so make sure your scripts load in this order:

<!-- Load jQuery first -->
<script src="path/to/jquery.min.js"></script>
<!-- Then Semantic UI JS -->
<script src="path/to/semantic.min.js"></script>
<!-- Finally your custom script -->
<script src="path/to/your-script.js"></script>

If jQuery loads after Semantic, the dropdown won't initialize properly, and no events will fire.

Start with checking the rendered HTML and script order — those are the most frequent culprits. Let me know if you still hit issues after trying these!

内容的提问来源于stack exchange,提问作者wtreston

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:26:35