2016-05-31 8 views
1

jsfiddle(https://jsfiddle.net/6k0bshb6/45/)に表示されるように、データテーブルのドロップダウンフィルタを作成しました。データを含まないオプションがあります - 検査要素<option value=""></option>この空のコンテナを削除し、空のときにドロップダウンボックスが選択オプションに追加オプションをスキップするように、データテーブル関数にデータテーブル関数を伝えることはできますか?Datatables - jQuery/Javascriptドロップダウンボックスに空のセレクタが含まれています

// Dropdown filter function for dataTable from hidden column number 5 for filtering gifts. 
     initComplete: function() { 
      this.api().columns(5).every(function() { 
       var column = this; 
       var select = $('<select><option value="">Show all</option></select>') 
        .appendTo($("#contracts_control-panel").find("div").eq(1)) // append dropdown to div 2 in control panel 
        .on('change', function() { 
        var val = $.fn.dataTable.util.escapeRegex(
        $(this).val()); 
        column.search(val ? '^' + val + '$' : '', true, false) 
         .draw(); 
         dataTable.page.len(5).draw(); //reset pagination after dropdown filter change. 
       }); 
       column.data().unique().sort().each(function (d, j) { 
        select.append('<option value="' + d + '">' + d + '</option>') 
       }); 
      }); 
     } 
    }); 

私は

column.data().unique().sort().each(function (d, j) { 
     if (d !== undefined) { 
       select.append('<option value="' + d + '">' + d + '</option>') 
     } 
      }); 

...このようなアペンド周りにif文をラップしようとしたが、それが何らかの理由で動作しませんでした。あなたはこの

column.data().unique().sort().each(function (d, j) { 
    d&&d.length&&select.append('<option value="' + d + '">' + d + '</option>') 
}); 

のように修正することができます

+2

'd!==" "'ではなく 'undefined'ですか?それを解決したhttps://jsfiddle.net/6k0bshb6/46/ – Chintan

+0

ありがとう – Scott

+0

は、SOのポリシーに従って答えとしてそれを追加しました。それが助けになったらそれを受け入れてください。 – Chintan

答えて

1

d !== undefinedの代わりにd !== ""を使用してください。 fiddleを参照してください。

column.data().unique().sort().each(function (d, j) { 
    if (d !== "") { 
      select.append('<option value="' + d + '">' + d + '</option>') 
    } 
}); 
1

私は1つの行は以下のようにその価値を失うが見つかりました: enter image description here

+0

このHTMLの値を削除しましたが、これはうまくいきます:) '' 'j &&' ''はあなたがそれを説明できますか? – Scott

+0

実際にはこれは関数を破るようです – Scott

+0

'd&function(){}'は{if(d){select.append( ' ')}と等価です。 ' – hunter2009

0

あなたは以下のように「すべて表示」の値を設定することができます。

ページの読み込みが完了したら、JQueryを使用して空のドロップダウンオプションを削除できます。以下のオプションは、インデックス

$('.dropdown-filter-div option:eq(1)').remove() 

に基づいて、ドロップダウン項目を削除するか、jQueryの下に使用し、以下のコードは、(あなたのコードでは空である)の値に基づいて、ドロップダウン項目

$('.dropdown-filter-div option[value=""]').remove() 

希望これを削除します助けてください。

関連する問題