简体   繁体   English

在 Swashbuckle / Swagger; 如何根据其他选择的值隐藏下拉菜单

[英]In Swashbuckle / Swagger; How do I hide a dropdown menu based on anothers selected value

I'm struggeling with this functionality of hiding a row based on a select:我正在努力使用隐藏基于 select 的行的功能:

<tr data-param-name="nodeGroup"> <tr 数据参数名称="节点组">

in web api, Program.cs:在 web api 中,Program.cs:

app.UseSwaggerUI(options => {          
        options.InjectJavascript("/custom.js");
    });

The javascript custom.js: javascript custom.js:

var providerSelect = null;
var nodeGroup = null;

document.onreadystatechange = () => {
    if (document.readyState === 'complete') {
        // document ready
        providerSelect = document.querySelector("[data-param-name='provider'] select");
        nodeGroup = document.querySelector("[data-param-name='nodeGroup']");

        if (providerSelect) {   
            providerSelect.addEventListener("change", function () {
                var text = providerSelect.options[providerSelect.selectedIndex].text;

                if (text == "EcoPlatform") {
                    nodeGroup.setAttribute("visibility", "visible");
                }
                else {
                    nodeGroup.setAttribute("visibility", "collapse");
                }
            });
        }
    }
};

The above does not work.以上不起作用。

  • The page is not actually shown on readystate === 'complete'该页面实际上并未显示在 readystate === 'complete'
  • providerSelect does not get populated before I click the downarrow on the "accordion".在我单击“手风琴”上的向下箭头之前,providerSelect 不会被填充。 <noscript> is replaced on click. <noscript> 在点击时被替换。

在此处输入图像描述

Was solved like this:是这样解决的:

document.addEventListener("change", function (event) {
var providerSelect = document.querySelector("[data-param-name='provider'] select");


if (event.target == providerSelect) {

    var nodeGroup = document.querySelector("[data-param-name='nodeGroup']");
    var selectedText = providerSelect.options[providerSelect.selectedIndex].text;

    var dataset = document.querySelector("[data-param-name='datasetType']");

    if (selectedText == "EcoPlatform") {
        nodeGroup.style["visibility"] = "visible";
        dataset.style["visibility"] = "visible";
    }
    else {
        nodeGroup.style["visibility"] = "collapse";
        dataset.style["visibility"] = "collapse";
    }
}
});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM