javascript - 根据从 SQL Server 数据库中获取的选项隐藏/显示下面的选择

标签 javascript html css asp.net-mvc visual-studio-2017

这是我的JavaScript

function appendItemforPurchaseOrder() {
    debugger

    var rowNumber = parseInt($(".itemmapContainer").attr("data-rownumber"));
    rowNumber = isNaN(rowNumber) ? 1 : rowNumber + 1;

    var addNewItemDetailHtml = "<div class='col-lg-12 col-md-12 col-sm-12 col-xs-12 itemmapWrapper custom-paaddingnone form-group'\
                               id='itemmapWrapper" + rowNumber + "' data-rowNumber='" + rowNumber + "' >";

    addNewItemDetailHtml += "<div class='col-lg-10 col-md-10 col-sm-10 col-xs-10 custom-paaddingnone form-group'>\
                                <div class='col-lg-1 col-md-1 col-sm-1 col-xs-1 custom-paaddingnone text-center'>" + rowNumber + "\
                                </div>\
                                <div class='col-lg-11 col-md-11 col-sm-11 col-xs-11 custom-paaddingnone'>\
                                    <div class='col-lg-4 col-md-4 col-sm-4 col-xs-4 custom-paaddingleft' onclick='createUserJsObject.hideRemove();'>\
                                        <select class='form-control' id = 'itemid"+ rowNumber + "' ></select></div>\
                                    **<div class='col-lg-2 col-md-2 col-sm-2 col-xs-2 custom-paaddingleft' style='display: none'>\
                                        <select class='form-control' id = 'hotelid"+ rowNumber + "' ></select></div>\**
                                </div> </div>";

    addNewItemDetailHtml += "</div>";

    $(".itemmapContainer").attr("data-rownumber", rowNumber);
    $(".itemmapContainer").append(addNewItemDetailHtml);
    intialize_itemDropDown(rowNumber);
}

从第一个选择框 (id=itemid) 选择选项后,第二个选择框 (id=hotelid) 应该显示。下面显示了我用于下拉菜单的功能。 hideRemove 函数用于显示隐藏的 div。但它不起作用。

function intialize_itemDropDown(rowNumber) {
    $.ajax({
        type: "GET",
        url: "/Item/GetAllItems/",
        cache: false,
        success: function (data) {
            debugger
            var countryHTMLString = "<option value ='0'>Select Item</option>";
            if (data.isSucess) {
                $.each(data.data, function (index, item) {
                    countryHTMLString += "<option value ='" + item.itemid + "'>" + item.itemname + " , " + item.companyname + "</option>";
                });
            }
            $("#itemid" + rowNumber + "").html(countryHTMLString);
        }, error: function (err) {
            debugger
        }
    });
}

function hideRemove() {
    $("#itemid").change(function () {
        $("#hotelid").hide();
        $("#" + $(this).val()).show();
    });
};

最佳答案

这一行:

onclick='createUserJsObject.hideRemove();'

正确调用了 hideRemove() 但函数实际上只是附加了 event 因此这意味着您必须先单击 然后将选择中的选项更改为 hide ()show() 它,除此之外,您还需要像这样在 hideRemove() 中做一些小改动:

function hideRemove() {
       $('body').on('change',
            '#itemid',
            function() {
               $("#hotelid").hide();
               $("#" + $(this).val()).show();
            });
}

因为您正在修改 DOM,所以您需要将事件附加到添加到 body 上的新元素

在这种情况下,我更愿意在这一行之后调用 hideremove()

 $(".itemmapContainer").append(addNewItemDetailHtml);

这部分我会删除,试一试:

onclick='createUserJsObject.hideRemove();'

关于javascript - 根据从 SQL Server 数据库中获取的选项隐藏/显示下面的选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58557327/

相关文章:

javascript - 使用 Ajax 和 SQL 时,数据库中的图像未显示在我的 HTML 中

html - 为什么我的页面让我在移动设备上滚动两次?

html - 在复制纸张交互的 Web 应用程序的 CSS 上使用 cm/mm 是一个好习惯吗?

html - 继承多行内联子项的宽度

javascript - 我有 3 个按钮,每个按钮都有一个 JavaScript 函数,但只有一个按钮在工作

javascript - 如何正确使用 XHR 创建自己的 Angular 服务?

Chrome 中的 Javascript 未返回与 Internet Explorer 相同的数组长度

javascript - package.json 文件是否有任何文档?

php - 我可以对内容使用最大宽度但对背景使用全宽度吗?

html - 如何双击而不是单击以 Angular 打开文件