【问题标题】:Select2 optional preselected tags and no result handlingSelect2 可选的预选标签和无结果处理
【发布时间】:2015-03-24 13:03:22
【问题描述】:

编辑:我找到了一个临时解决方法来处理无结果。您可以返回一个 id 为 0 的 no results found 标签。它仍然是可选的,但您可以在将标签插入数据库时​​跳过它,如下所示:

if($tagId != 0){
    // tag is not the no result tag, so continue
}

这是一个临时解决方案,另一个问题仍然存在。

编辑 2:回答了无结果处理问题。我的代码中有一个错误,导致 preSelectedTags 变成了 PHP 错误。糟糕。

我已经搜索了两天,但似乎找不到答案。

我正在使用select2 添加标签功能。它显示得很好,并且在设置了标签时可以正常工作。但是,当没有预选标签时,整个事情都会中断。这是我的 select2 的样子:

$('.candidateTags').select2({
    //omitted for brevity
}).select2('data',preSelectedTags);

preSelectedTags 是一个变量,其中包含来自 PHP 的 json 编码数组。这在实际添加标签时效果很好,但是当它没有找到任何要预选的东西时,整个事情就会崩溃。

另外,当没有找到结果时,我似乎无法弄清楚 ajax 调用应该返回什么。如果没有结果,这是它返回的内容:

else {
    $results[] = array('id'=> "-1", 'text' => 'Er zijn geen resultaten gevonden');
}

echo json_encode($results);

显然,这会返回一个可选择的选项,从而破坏了我的整个代码。 有人可以解释我如何使用可选的预选以及我应该如何处理“找不到退货”消息吗?

【问题讨论】:

    标签: php jquery jquery-select2


    【解决方案1】:

    删除您的 else 条件并在您的 java 脚本中尝试此代码,

    if(typeof(preSelectedTags)=='undefined') {
        $('.candidateTags').select2('data',null);
    }
    

    【讨论】:

    • 这种作品。问题是现在我的数据集为空。这意味着当用户开始输入时,Select2 给出以下错误: Uncaught TypeError: Cannot read property 'length' of null
    【解决方案2】:

    我想出了自己的问题。

    第一部分(关于 preSelectedTags 给出错误并破坏了我的 select2 元素): 我用它来创建标签数组:

    var preSelectedTags = [<?php  
        foreach($preSelectedTags as $tag) { 
            echo($tag . ','); 
        }
    ?>];
    

    这可行,但是当 $preSelectedTags 为空时,PHP 会将 preSelectedTags var 变为错误。为了解决这个问题,添加一个 if 语句:

    if(!empty($preSelectedTags)){
        //code
    }
    

    现在是第二部分(关于“未找到结果”可选选项):

    There are two ways to solve this, apparently:

    首先是在json字符串中添加'disabled:true',所以看起来是这样的:

    else {
        $results[] = array('id'=> "-1", 'text' => 'no results found', 'disabled' => 'true');
    }
    
    echo json_encode($results);
    

    但是,这对我有用。另一种解决方法是在 $results 数组中省略 id:

    else {
        $results[] = array('text' => 'Er zijn geen resultaten gevonden');
    }
    
    echo json_encode($results);
    

    【讨论】:

      猜你喜欢
      • 2014-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-02
      • 1970-01-01
      相关资源
      最近更新 更多