1

我正在尝试在 textextjs 方法中调用一个函数-

//my function
function GetAreaTags() {
    return "some text";
}

//textext initializtion
$('#territory').textext({
    plugins: 'tags prompt focus autocomplete ajax',
    ajax: {
         url: '/Admin/Search/GetTerritorySuggestions?area=' + GetAreaTags(),
         dataType: 'json',
         cacheResults: false
    }
});

但是GetAreaTags()没有被调用。我怎样才能让它发生?

4

1 回答 1

1

它应该工作......但试试这个:

function GetAreaTags() {
    return "some text";
};
var yourObj= {
    plugins: 'tags prompt focus autocomplete ajax',
    ajax : {
      url: '/Admin/Search/GetTerritorySuggestions?area=' + GetAreaTags(),
      dataType: 'json',
      cacheResults: false
    }
};
$('#territory').textext(yourObj);
console.log(yourObj.ajax.url);

如果这不起作用,试试这个:

function GetAreaTags() {
    return "some text";
};
var yourObj= {
    plugins: 'tags prompt focus autocomplete ajax',
    ajax : {
      url: function() {return '/Admin/Search/GetTerritorySuggestions?area=' + GetAreaTags()},
      dataType: 'json',
      cacheResults: false
    }
};
$('#territory').textext(yourObj);
console.log(yourObj.ajax.url);

两次检查控制台,看看你的网址是否是你想要的。

[编辑:我错误地拒绝了编辑,对此感到抱歉]

编辑2

来自 skpaul 的评论:

GetAreaTags() 应该在我每次输入该文本框时执行。但是,控制台说- 1. /Admin/Search/GetTerritorySuggestions?area= 2. localhost:12788/Admin/Dashboard/...}&q= 404(未找到)

因此,您需要另一个事件处理程序来动态更改 url(必须使用另一个 url 调用插件):

function GetAreaTags() {
    return "some text";
};
$("#territory").keyup(function() {
    var yourObj= {
        plugins: 'tags prompt focus autocomplete ajax',
        ajax : {
          url: function() {return '/Admin/Search/GetTerritorySuggestions?area=' + GetAreaTags()},
          dataType: 'json',
          cacheResults: false
        }
    };
    $('#territory').textext(yourObj);
    console.log(yourObj.ajax.url);
});

但是,这可能非常繁重......该插件希望您对自动完成资源有一个参考。如果您正在动态更改它,它可能会重置已经存在的东西。

编辑3

编辑 2:textextjs 现在根本不起作用。并且,url 函数返回整个函数文本

这意味着插件不能很好地处理在同一元素中被召回两次或更多次。我看到的唯一可能的解决方案是更改插件的代码,以便根据您的功能动态更改资源......

这让我想知道,如果您在输入时允许用户拥有更广泛的数据资源(包括所有区域)更容易,这样就只有一个 URL,插件不会有任何问题。

于 2015-08-06T10:37:01.880 回答