如何为$(" .type")中的特定行id传递$(" .type")。val()。autocomplete()

时间:2014-05-23 07:59:19

标签: jquery jquery-autocomplete

我正在使用以下代码获取产品类型,该代码运行正常。 我的问题是有多个.type。我想为特定的.type调用代码。父类型为.row' and each。行has unique row id. I would like to pass $(".type").val()用于特定.row id

如何做到这一点。

        $(function() {
            function log(message) {
                $("<div>").text(message).prependTo("#log");
                $("#log").scrollTop(0);
            }

            $(".type").autocomplete({
                source: function(request, response) {
                    $.ajax({
                        url: "autoProductType",
                        dataType: "json",
                        data: {
                            str: $(".type").val(),// This value
                            maxRows: 5
                        },
                        success: function(data) {
                            response($.map(data.productTypeList, function(item) {
                                console.log(item);
                                return {
                                    label: item.productType,
                                    value: item.productType,
                                    id: item.productTypeId
                                };
                            }));
                        },
                        error: function(data) {
                            alert(data.productTypeList);
                            console.log(typeof data);
                            console.log(data);
                            alert('error');
                        }
                    });
                },
                minLength: 1,
                select: function(event, ui) {
                    log(ui.item ?
                            "Selected: " + ui.item.label :
                            "Nothing selected, input was " + this.value);
                    var pid = $(this).parents('.row').attr('id');
                    $("#" + pid + " .typeId").val(ui.item.id);
                },
                open: function() {
                    $(this).removeClass("ui-corner-all").addClass("ui-corner-top");
                },
                close: function() {
                    $(this).removeClass("ui-corner-top").addClass("ui-corner-all");
                }
            });
        });
    </script>

编辑:我正在尝试关注,但这也无效

 function get_row_dtl() {
            var pid = $(this).parents('.row').attr('id');
            var val = $('#' + pid + ' .type').val();
            return val;
        }

自动填充

str: get_row_dtl(),

**编辑:**请参阅fiddle here。 在这里,我在类型上创建自动完成。 我的自动完成功能正常用于第一种类型(此处显示所有产品类型)。 但是对于第二个和第二个,它没有显示所有产品列表它只显示已在第一个中选择。所以我想在第二个和下一个类型

上显示所有产品列表(在自动完成时)

2 个答案:

答案 0 :(得分:1)

试试这个。

$(".type").val()替换为request.term

来自http://api.jqueryui.com/autocomplete/#option-source

功能第三种变体,一种回调,提供了最大的灵活性,可用于将任何数据源连接到自动完成。回调有两个参数:

  • 具有单个术语属性的请求对象,该属性引用文本输入中当前的值。例如,如果用户输入&#34; new yo&#34;在城市字段中,自动填充术语将等于&#34; new yo&#34;。
  • 响应回调,它需要一个参数:向用户建议的数据。应根据提供的术语过滤此数据,并且可以采用上述任何简单本地数据格式。在提供自定义源回调以处理请求期间的错误时,这一点非常重要。即使遇到错误,也必须始终调用响应回调。这可确保窗口小部件始终具有正确的状态。

答案 1 :(得分:1)

请将您的函数get_row_dtl()更改为

function get_row_dtl() {
    var $el= $(':focus');
    var pid = $el.parents('.row').attr('id');
    var val = $('#' + pid + ' .type').val();
    return val;
        }

$(&#39;:焦点&#39);用于获得聚焦元素。所以关注outocomplete的任何元素都是重点关注的。这行将为您提供参考,您将获得所需的结果。 我检查过它和它的工作。如果有效,请将其标记为答案。