【问题标题】:Add extra data in textextjs plugin在 textextjs 插件中添加额外的数据
【发布时间】:2015-08-06 10:21:53
【问题描述】:

我正在尝试在 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() 没有被调用。我怎样才能做到这一点?

【问题讨论】:

    标签: javascript jquery jquery-textext


    【解决方案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

    来自 s.k.paul 的评论:

    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,插件不会有任何问题.

    【讨论】:

    • @s.k.paul 你能描述一下控制台的输出吗?我在自己的控制台中尝试了这个,并且 url 像这样/Admin/Search/GetTerritorySuggestions?area=some text 出现。 textExt 插件有错误吗?
    • GetAreaTags() 应该在我每次输入该文本框时执行。但是,控制台说- 1. /Admin/Search/GetTerritorySuggestions?area= 2. localhost:12788/Admin/Dashboard/…}&q= 404(未找到)
    • @s.k.paul 哦...所以问题是另一个问题。如果您希望它在每次键入内容时都执行,那将不起作用,因为插件期望 url 参数是静态的(相同的)。直接的解决方案是在 url 发生变化时调用 textExt 方法。我会根据你的回复编辑我的答案。
    • 编辑 2:textextjs 现在根本不起作用。并且,url 函数返回整个函数文本。
    • @s.k.paul 好的,这意味着插件不希望在同一个元素中被调用。唯一的解决方案是更改插件以调用您的函数并动态更改资源。
    猜你喜欢
    • 2016-08-30
    • 2014-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-25
    • 2015-07-03
    • 1970-01-01
    相关资源
    最近更新 更多