我使用了一个$.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();
}
不知道我写的代码有什么问题。
2条答案
按热度按时间ncgqoxb01#
这些看起来像是自定义的选择字段,而不是浏览器本身提供的字段。控制台输出中的一个错误表明JS解析器在解析代码时遇到了错误。我建议首先检查您正在加载的select2.min.js文件是否已损坏。
与question没有严格的联系,但是请注意,这样的库通常通过隐藏原始元素,然后在其上生成它自己的HTML结构来工作。因此,需要额外注意您操作的是哪些元素。虽然选项和选择状态通常在两者之间同步,但其他元素,如悬停事件和optgroup,可能不同步。
你可以通过浏览器检查来检查你的代码是否正确运行,找到原始的
<select>
并取消隐藏它,或者简单地从加载的库列表中删除select2,看看它是否按照你期望的方式运行。fjaof16o2#
好的,我找到了一个解决方法。由于下拉菜单不能正常工作,我创建了一个文本框。所以现在值显示在文本框中,而不是禁用的下拉列表。仍然不明白为什么填充下拉菜单不能很好地工作,但至少这种方法更一致。
如果你好奇的话,这是最后一个外观: