jQuery两个AutoComplete函数传参异常:隐藏字段值显示NaN求助
问题与解决方案
问题描述
尝试将第一个jQuery AutoComplete函数的结果值存入隐藏字段,再将该字段值作为参数传入第二个AutoComplete函数,但参数值显示为NaN。
问题原因
- 第二个AutoComplete的
extraParams中,parseInt($('#ctl00_cph_main_content_hdnFabric_Qualityid').val())在页面初始化时就执行了,此时隐藏字段还未被赋值,parseInt处理空值会返回NaN。 - 硬编码隐藏字段ID,未使用已定义的
hdnQuality_Id变量,易出现ID匹配错误。
解决方案
将extraParams改为函数形式,确保每次触发AutoComplete请求时才获取隐藏字段的最新值;同时统一使用hdnQuality_Id变量访问隐藏字段,避免ID错误。
修改后的代码:
<script type="text/javascript"> var hdnQuality_Id = '<%=hdnFabric_Qualityid.ClientID %>'; $(document).ready(function () { debugger; var fabric_Quality_id; $("input[type=text].auto-fabricname").autocomplete("/Webservices/iKandiService.asmx/SuggestFabricNameByName1", { dataType: "xml", datakey: "string", max: 100, "width": "220px" }); $("input[type=text].auto-fabricname", "#main_content").result(function () { if ($(this).val().length === 1) { $(this).val(''); } }); $("input[type=text].auto-fabricname").result(function () { debugger; var mys = $(this).val().split('$'); if (!mys[1]) { return false; } var mys2 = mys[1].split('**'); $(this).val(mys2[0]); fabric_Quality_id = mys2[1]; $("#" + hdnQuality_Id).val(fabric_Quality_id); }); $("input[type=text].auto-color").autocomplete("/Webservices/iKandiService.asmx/SuggestColorPrintName", { dataType: "xml", datakey: "string", max: 100, "width": "220px", extraParams: function() { return { Qualityid: parseInt($("#" + hdnQuality_Id).val()) || 0 // 避免parseInt失败时传NaN,可按需调整默认值 }; } }); $("input[type=text].auto-color").result(function () { debugger; var col = $(this).val().split('**'); $(this).val(col[1]); alert($("#" + hdnQuality_Id).val()); }); }); </script>
额外说明:
extraParams改为函数后,每次发起请求时都会执行该函数,获取当前隐藏字段的最新值。- 添加
|| 0是为了防止隐藏字段值无效时,参数传NaN,可根据实际业务调整默认值。 - 所有访问隐藏字段的地方统一使用
$("#" + hdnQuality_Id),避免硬编码ID出错。
内容的提问来源于stack exchange,提问作者shubhendu infotech
相关产品推荐
相关产品推荐

