jquery 有时HTML元素不显示值

lf3rwulv  于 2023-03-17  发布在  jQuery
关注(0)|答案(2)|浏览(200)

我使用了一个$.get方法来填充一些数据,如果这些数据存在,那么就用.show()填充html元素。

如果没有数据,则页面应如上所示。

如果有数据,那么页面应该显示填充的html元素,如图所示。
我的问题是,有时候,即使有要显示的数据,元素也会显示,但它们没有被正确填充,如下图所示:

控制台显示正在正确检索数据,如下所示:

更奇怪的是,在数据加载不正确的例子中,价格加载正常。不明白为什么价格是可以的,但禁用的下拉菜单有时不显示任何内容。
下面是我用来加载数据的代码:

Here's the code:
$.get('${pageContext.request.contextPath}/Servlet_Stock', {PRDCODE: sParam.PRDCODE, SFC: 'GET_PRD_DETAIL'}, function(data) {
                    var arrData = data.object1[0];
                    //console.log("arrData: ",arrData);
                    defUOM = arrData.stk_baseuomcode;
                    $('#modalCode').val(arrData.stk_stockcode);
                    $('#modalDesc').val(arrData.stk_desc);
                    
                    if (arrData.MinPriceBase.length !== 0) {
                        $("#priceAdd").hide();
                        //$('#minPriceActive').trigger('click');
                        $('#minPriceActive').prop('checked',true);
                        console.log(arrData.MinPrice, " + ", arrData.MinPriceBase, " + ", arrData.MinPriceUOM);

                        $("#minPriceActive").prop("disabled", true);
                        $("#minPrice").prop("disabled", true);
                        $("#ddlMinPrc").prop("disabled", true);
                        $("#ddlUOM").prop("disabled", true);
                        
                        $("#mbField").show();
                        $("#mbField2").show();
                        $('#minPrice').val(arrData.MinPrice);
                        $('#ddlMinPrc').val(arrData.MinPriceBase);
                        $('#ddlUOM').val(arrData.MinPriceUOM);
                    } else {
                        //$("#tblSearch").hide();
                        $("#minPriceActive").prop("disabled", true);
                        $("#priceAdd").hide();
                    }

不知道我写的代码有什么问题。

ncgqoxb0

ncgqoxb01#

这些看起来像是自定义的选择字段,而不是浏览器本身提供的字段。控制台输出中的一个错误表明JS解析器在解析代码时遇到了错误。我建议首先检查您正在加载的select2.min.js文件是否已损坏。
与question没有严格的联系,但是请注意,这样的库通常通过隐藏原始元素,然后在其上生成它自己的HTML结构来工作。因此,需要额外注意您操作的是哪些元素。虽然选项和选择状态通常在两者之间同步,但其他元素,如悬停事件和optgroup,可能不同步。
你可以通过浏览器检查来检查你的代码是否正确运行,找到原始的<select>并取消隐藏它,或者简单地从加载的库列表中删除select2,看看它是否按照你期望的方式运行。

fjaof16o

fjaof16o2#

好的,我找到了一个解决方法。由于下拉菜单不能正常工作,我创建了一个文本框。所以现在值显示在文本框中,而不是禁用的下拉列表。仍然不明白为什么填充下拉菜单不能很好地工作,但至少这种方法更一致。
如果你好奇的话,这是最后一个外观:

相关问题