Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript中的意外标识符_Javascript_Jquery - Fatal编程技术网

Javascript中的意外标识符

Javascript中的意外标识符,javascript,jquery,Javascript,Jquery,我正在动态地向列表中添加内容,我希望能够防止添加重复内容。因此,在添加内容之前,我将选择所有列表,制作一个数组,并检查我添加的数据是否尚未包含在列表中。但是,我在代码中得到了一个意外的标识符。这是我的代码: $(".autocomp_centers").autocomplete({ var ids = new Array(); $("#sister-centers-list > li").each(function(index, value){ ids.pu

我正在动态地向列表中添加内容,我希望能够防止添加重复内容。因此,在添加内容之前,我将选择所有列表,制作一个数组,并检查我添加的数据是否尚未包含在列表中。但是,我在代码中得到了一个意外的标识符。这是我的代码:

$(".autocomp_centers").autocomplete({
    var ids = new Array();
    $("#sister-centers-list > li").each(function(index, value){
        ids.push($(value).attr('class'));
        console.log($(value).attr('class'));
    });

    serviceUrl:'/suggest_centers',
        maxHeight:400,
        width:252,
        params: {country: $("#country").val() },
        minChars:2,
        onSelect: function(value, data){
            if ($.inArray(data, ids) == -1){
                alert("Sister center has already been added.");
            }else{
                $("#hidden-ids").append('<input type="hidden" name="center_ids[]" value="' + data +'" class="center-' + data + '"/>');
                $('#sister-centers-list').append('<li class="center-' + data + '">' + value + ' <a href="#sister-center" class="remove-center-before-save" id="' + data + '">Remove</a></li>');
            }               
            $("#sister-search").val("");
        }
});
$(“.autocomp\u中心”).autocomplete({
var id=新数组();
$(“#姐妹中心列表>li”)。每个(函数(索引,值){
id.push($(value.attr('class'));
console.log($(value.attr('class'));
});
服务URL:“/suggest_centers”,
最大高度:400,
宽度:252,
参数:{country:$(“#country”).val()},
明查斯:2,
onSelect:函数(值、数据){
if($.inArray(数据,ID)=-1){
警报(“已添加姐妹中心”);
}否则{
$(“#隐藏ID”).append(“”);
$(“#姐妹中心列表”).append(“
  • “+value+”
  • ”); } $(“#姐妹搜索”).val(“”); } });

    当用户开始键入并调用此方法时,我会获取列表值并将其存储在数组中。当他们选择一个值时,我检查该值是否已经在数组中。这是导致错误的行:
    var ids=new Array()

    您已经启动了一个对象文字,而它看起来像是要启动一个函数

    {
        var ids = new Array();
    
    您可能想要:

    function () {
        var ids = new Array();
    
    autocomplete命令()需要一个对象作为参数——不能在对象属性之间直接编写代码

    请尝试以下方法:

    var ids = new Array();
    $("#sister-centers-list > li").each(function(index, value){
        ids.push($(value).attr('class'));
        console.log($(value).attr('class'));
    });
    
    $(".autocomp_centers").autocomplete({
        serviceUrl:'/suggest_centers',
        maxHeight:400,
        width:252,
        params: {country: $("#country").val() },
        minChars:2,
        onSelect: function(value, data){
            if ($.inArray(data, ids) == -1){
                alert("Sister center has already been added.");
            }else{
                $("#hidden-ids").append('<input type="hidden" name="center_ids[]" value="' + data +'" class="center-' + data + '"/>');
                $('#sister-centers-list').append('<li class="center-' + data + '">' + value + ' <a href="#sister-center" class="remove-center-before-save" id="' + data + '">Remove</a></li>');
            }               
            $("#sister-search").val("");
        }
    });
    
    var id=new Array();
    $(“#姐妹中心列表>li”)。每个(函数(索引,值){
    id.push($(value.attr('class'));
    console.log($(value.attr('class'));
    });
    $(“.autocomp\u中心”).autocomplete({
    服务URL:“/suggest_centers”,
    最大高度:400,
    宽度:252,
    参数:{country:$(“#country”).val()},
    明查斯:2,
    onSelect:函数(值、数据){
    if($.inArray(数据,ID)=-1){
    警报(“已添加姐妹中心”);
    }否则{
    $(“#隐藏ID”).append(“”);
    $(“#姐妹中心列表”).append(“
  • “+value+”
  • ”); } $(“#姐妹搜索”).val(“”); } });

    当然,根据应用程序的功能,您可能需要进行更多更改。例如,如果在同一页面上有多个“自动完成”内容,则可能需要为每个内容使用单独的ID数组。等等。

    autocomplete需要一系列选项。您的ID声明和以下内容。每个都应该移出自动完成块。那么您建议我如何在每次触发自动完成时收集列表的内容?谢谢,我刚刚指出了你的代码有什么问题。如果此ID选择只需运行一次,请将其从autocomplete声明中移到您的document.readyAlso中,使用文本而不是构造函数
    var id=[]
    @Amberlamps-这在很大程度上是一种风格选择,不会影响问题中描述的问题。我从来没有说过它会影响问题本身。你已经向他暗示了正确的方向。不过,加入一些最佳实践并没有什么坏处。大家好,我只需要一个数组变量来存储值。我现在使用varids=[],但仍然是一样的problem@Quentin--似乎是另一种情况:autocomplete需要对象,而程序失败是因为对象中存在语法错误的代码。我能够在onSelect函数中获取值。谢谢你的回复。