【问题标题】:Remove all options from dijit.form.FilteringSelect从 dijit.form.FilteringSelect 中删除所有选项
【发布时间】:2011-05-30 11:41:23
【问题描述】:

我需要帮助才能从 FilteringSelect 中删除所有选项。

选择的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 中调用函数时,则无法识别选择。

例子:

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

【问题讨论】:

    标签: jquery dojo dijit.form


    【解决方案1】:

    要从过滤中删除所有选项,请选择:

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

    在 Dojo 1.7.2 中为我工作

    【讨论】:

      【解决方案2】:

      以下对我有用(dojo 1.8.3):

      var node = document.getElementById("MY_SELECT_ID");
      while (node.firstChild) node.removeChild(node.firstChild);
      

      这是 user2243420 答案的非 jQuery 版本

      【讨论】:

        【解决方案3】:

        以下是如何以编程方式删除所有选项。分配一个新的空白商店。然后将该值设置为空白。

                // 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', '');
        

        【讨论】:

          【解决方案4】:

          我们可以为过滤选择小部件存储设置一个空数组。

          dijit.byId('widgetId').store.data.splice(0,dijit.byId('widgetId').store.data.length);
          

          或者简单地说,

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

          或者您可以将商店本身设置为空。 (但是,要在此之后添加新选项,您需要在添加新选项之前再次重新创建商店)。

          dijit.byId('widgetId').store = null;
          

          【讨论】:

            【解决方案5】:

            几件事,

            1) dojo.byId("kat") 应该是 dijit.byId("kat")

            2) 我认为过滤选择没有删除方法。

            3) 删除您可以使用的所有选项

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

            谢谢

            【讨论】:

            • 这不只是清除列表,它杀死它意味着你不能再添加选项..
            猜你喜欢
            • 1970-01-01
            • 2012-03-13
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-09-22
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多