【问题标题】:Hide button for modal if {{ value[#] }} empty如果 {{ value[#] }} 为空,则隐藏模态按钮
【发布时间】:2020-05-01 10:47:34
【问题描述】:

我目前正在使用 Flask 开发与仓库库存相关的 Excel 报告的 Web 界面。我已经使用 DataTables 构建了一个表格,该表格从 csv 文件中提取数据并且它正在工作。 我被要求在每行末尾添加一个额外的数据单元格,如果该库存项目的 csv 文件中存在注释,则该单元格有一个可单击的按钮来打开注释。 我正在尝试使用 Font Awesome 图标让用户单击以打开显示注释的模式,但是我无法仅在有要查看的注释时才显示该图标。

这是我尝试过的

<tbody>                     
    {% for value in stocklist %}
    <tr>
       <td value="{{ value[12] }}"><p class="muted hidden">{{ value[12] }}</p></td>                        
       <td>{{ value[0] }}</td>
       <td>{{ value[2] }}</td>
       <td class="over-25">{{ value[4] }}</td>
       <td>{{ value[6] }}</td>
       <td>{{ value[7] }}</td>
       <td>{{ value[8] }}</td>
       <td>{{ value[9] }}</td>
       <td>{{ value[10] }}</td>
       <td>{{ value[11] }}</td>
       <td id="notes"><button type="button" class="btn btn-warning hide_show" data-toggle="modal" data-target="#myModal"><i class="fas fa-exclamation"></i></button></td>
     </tr>                                       
     {% endfor %}

     {% for value in stocklist %}
        <div class="modal fade" id="myModal" role="dialog">
            <div class="modal-dialog">
                <!-- Modal content-->
                <div class="modal-content">
                    <div class="modal-header ml-2">                                    
                       <h4 class="modal-title">Notes</h4>
                    </div>
                    <div class="modal-body">
                       <p>{{ value[13] }}</p>                                    
                    </div>
                    <div class="modal-footer ml-2">
                       <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
                    </div>
                 </div>
              </div>
           </div>
     {% endfor %}                       
</tbody>

这是我尝试过的 jQuery -

$("#notes").find('hide_show').filter(function() {
return !this.firstChild; 
}).hide();

我的尝试基于这个答案 --> Hide div's if they are empty

我遇到的另一个问题是,当模式打开时,不管怎样,它都会为每个库存项目显示相同的注释(库存项目编号 1 的注释)。

如何让图标仅在有注释时出现,然后在打开时让正确的注释出现在模态中?

任何帮助将不胜感激! 谢谢

【问题讨论】:

  • 不是解决方案,但是当您在 for 循环中编写它们时,您会多次使用 id="notes" 和 id="myModal" 。 id 必须是唯一的。最好改为类。
  • 感谢您重播马蒂亚斯。这也是我一直在玩弄的东西,但不幸的是,没有任何效果

标签: jquery if-statement flask datatables jinja2


【解决方案1】:

您可以在拉取值中添加注释数据。我不知道你是如何提取数据的,但这是一个提示

{% if value.notes %}

<td id="notes"><button type="button" class="btn btn-warning hide_show" data-toggle="modal" data-target="#myModal"><i class="fas fa-exclamation"></i></button>
</td>

{% endif %}

【讨论】:

  • 您好 Tejiri,感谢您的回复。这是我用于数据的路线-> def csv_file(): filename = 'static/critical_stock_categories.csv' data = pd.read_csv(filename, header=0) stocklist = list(data.values) return render_template( 'csv-table.html', stocklist=stocklist) 使用你的建议,我选择了 {% if value[13] %} 但它没有改变任何东西。每个表格行都有一个可供单击的图标,并带您进入一个模式,其中包含与其他所有库存项目完全相同的注释
【解决方案2】:

我解决了!

我添加了以下内容-->

{% if value[13] is number %}
<td></td>
  {% else %}
    <td>The icon I wanted to display</td>
 {% endif %}

在 csv 文件中,如果库存项目没有注释,它将自动填充为 0,因此它不会呈现图标,因此没有可点击的内容。

【讨论】:

    猜你喜欢
    • 2020-11-06
    • 2016-03-06
    • 1970-01-01
    • 2020-03-06
    • 1970-01-01
    • 1970-01-01
    • 2021-11-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多