选择2个可选的预选标签,不进行结果处理

时间:2015-03-24 13:03:23

标签: php jquery jquery-select2

编辑:我找到了无结果处理的临时解决方法。你可以返回一个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);

显然,这会返回一个可选择的选项,破坏我的整个代码。 有人可以解释我如何使用可选的预选,以及我应该如何处理'no returns found'-message?

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

我想出了我自己的问题。

第一部分(关于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

第一个是将'disabled:true'添加到json字符串,所以它看起来像这样:

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);