You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

jQuery两个AutoComplete函数传参异常:隐藏字段值显示NaN求助

问题与解决方案

问题描述

尝试将第一个jQuery AutoComplete函数的结果值存入隐藏字段,再将该字段值作为参数传入第二个AutoComplete函数,但参数值显示为NaN。

问题原因

  1. 第二个AutoComplete的extraParams中,parseInt($('#ctl00_cph_main_content_hdnFabric_Qualityid').val())在页面初始化时就执行了,此时隐藏字段还未被赋值,parseInt处理空值会返回NaN。
  2. 硬编码隐藏字段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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 03:18:41