使用类似的ID访问输入值

时间:2013-10-28 22:19:09

标签: javascript php jquery jquery-autocomplete

我的页面上有几个动态创建的输入字段。在JQuery中,我试图获取我正在输入的值的值,以便我可以将值传递给我的php脚本来填充自动完成。

例如:

 <input id="inventory_location_1">
 <input id="inventory_location_2">
 <input id="inventory_location_3">
 <input id="inventory_location_4">
 <input id="inventory_location_5">
 <input id="inventory_location_6">

如果由于某种原因我将文本输入“inventory_location_1”我无法使用var strValue = $(this).val();获取我正在输入的框的文本。 Jquery抛出一个错误。

这是我的完整Jquery脚本;

 $(function() {
        $('input[id^=inventory_location_]').autocomplete({
            source: function( request, response ) {
                $("#progressBar").show();
                var strValue = $(this).val();
                alert(asdf);
                $.ajax({
                    url: '{{ path('inventory_id_via_ajax_array') }}',
                    dataType: "json",
                    data: {
                        featureClass: "P",
                        style: "full",
                        maxRows: 12,
                        value: strValue
                    },
                    success: function( data ) {
                        if(data.responseCount <= 0){
                        }
                        response( $.map( data.responseData, function( item ) {
                            return {
                                label: item.name,
                                name: item.name,
                                value: item.name,
                                id: item.id
                            }
                        }));
                        $("#progressBar").hide();
                    }
                });
            },
            minLength: 2,
            select: function( event, ui ) {
                $("#progressBar").hide();
                $(this).val(ui.item.label);
            },
            open: function() {
                $( this ).removeClass( "ui-corner-all" ).addClass( "ui-corner-top" );
            },
            close: function() {
                $( this ).removeClass( "ui-corner-top" ).addClass( "ui-corner-all" );
            }
        });
    });

不知道该怎么做,我做了我能想到的一切。另外,如果您在我的脚本中看到其他不正确的内容,请提供建议。谢谢你的帮助!!!

2 个答案:

答案 0 :(得分:1)

这是一个简单的解决方法,当您在页面中的许多元素上初始化插件但需要访问每个特定元素时,该方法很有效

 $('input[id^=inventory_location_]').each(function(){
           /* within $.each  "this" is the current element*/
           var ID=this.id; // can now pass  variable into plugin wherever you need it
             $(this).autocomplete({/* options*/});

});

答案 1 :(得分:0)

您所引用的行位于函数内部,因此该''关键字不再与输入字段相关。

此外,您似乎正在尝试从自动完成源函数中执行其他任务,我认为这不是正确的位置。