从dijit.form.FilteringSelect中删除所有选项

3
我可以帮助您进行翻译。以下是需要翻译的内容:

我需要帮助删除FilteringSelect中的所有选项。

Select的HTML代码:

        <select id="kat" dojoType="dijit.form.FilteringSelect" style="width:170px; height: 22px;" name="form[kategorija]">
            <option value="izbira">Izberi...</option>
            <?php
            $rezKat = $tabelaKategorij->dobiVseKategorije();
          foreach($rezKat as $rowKat):
    echo '<option id="optkat" value="'.$rowKat['id'].'">'.$rowKat['ime_kategorije'].'</option>';                         
endforeach;
        ?>
        </select>

删除所有选项的函数
function izbrisiSeznam()
{
     var j;
     for (j = dojo.byId("kat").length - 1; j>=0; j--)
     {
        dojo.byId("kat").remove(j);
     }
}

当我在调用这个函数时...
$(document).ready(function () {
    izbrisiSeznam();
});

然后就可以正常工作了。但是当我尝试在onSuccess中调用函数时,它无法识别select。

例如:

function dodajKategorijo()
    {
            var ime_kategorije = $('#ime_kategorije').val();
            if(ime_kategorije!= '')
            {
                    $.ajax({
                        type: "GET",
                        url: "<?php echo constant('REL_PATH'); ?>/admin/dodajkategorijo/",
                        dataType: 'json',
                        data:
                        {
                          id: ime_kategorije
                        },
                        success: function(data) {

                            var vsebina = '';
                            vsebina = '<div id="kategorija'+data.id+'" class="form-field clear">'+
                                      '<label for="'+data.ime_kategorije+'" class="form-label size-80 fl-space2">&nbsp;</label>'+
                                      '<input disabled value="'+data.ime_kategorije+'" type="text" id="'+data.id+'" class="required size-140 text fl" name="form[naslov]" />'+
                                      '<a href="javascript:void:(0)" onClick="izbrisiKategorijo('+data.id+')"><img src="<?php echo constant('REL_PATH'); ?>/images/button/delete.png" class="gumbek" alt="" /></a>'
                                      '</div>';

                            $('#nalozene_kategorije').append(vsebina);

                            izbrisiSeznam();
                        }
                    });
                    return true;
                }
                else
                {
                    alert('Vnesti morate ime kategorije');
                    return false;
                }
    }
5个回答

9

要从您的筛选选择中删除所有选项:

dijit.byId('kat').removeOption(dijit.byId('kat').getOptions());

在Dojo 1.7.2版本中对我有用


1
以下对我有效(dojo 1.8.3):
var node = document.getElementById("MY_SELECT_ID");
while (node.firstChild) node.removeChild(node.firstChild);

这是用户2243420的非jQuery版本的答案。

0

以下是如何以编程方式删除所有选项的方法。分配一个新的空存储,然后将其值设置为空。

        // Define it programatically:
        _cellsSelect = new dijit.form.FilteringSelect({
            id : "cells" + _instance,
            store : cellStore,
            searchAttr : "name"
        });

        // Clear it:
        _cellsSelect.store = new dojo.store.Memory({
                data : [ {
                    name : '',
                    id : ''
                } ]
            });
        _cellsSelect.set('value', '');

0
我们可以将一个空数组设置为筛选选择小部件的存储。
dijit.byId('widgetId').store.data.splice(0,dijit.byId('widgetId').store.data.length);

或者简单地说,

dijit.byId('widgetId').store.data = [];

或者你可以将存储设为null。(但是,在此之后如果要添加新的选项,你需要先重新创建存储,然后再添加新的选项)。
dijit.byId('widgetId').store = null;

-1

几件事情:

1)dojo.byId("kat") 应该改为 dijit.byId("kat")

2)我认为过滤选择器上没有 remove 方法。

3)要删除所有选项,您可以使用以下方法

dijit.byId('kat').dropDown.destroy()

谢谢


这不仅清空了列表,而且彻底删除了它,这意味着您无法再添加选项。 - Lloyd

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接