10

全体として、SELECT入力から空のオプションをすべて削除したいと考えています。選択は、受け取ったオブジェクトに基づいて、他の誰かが書いたスクリプトから動的に生成されます。私の問題は、オブジェクトの値が空の場合があり、必要なものを残す選択オプションセットが残っていることです。

とにかく、ほとんどの場合、セットの最初のオプションは空です。したがって、それを削除しselected="selected"て、最初のオプションが削除された後に表示される最初のオプションに適用し、空の値を持つ他の可能性を削除します。

だから私が思いついた最初のコンセプトをテストする際に

$(select).each(function(){
                if ($(this+' option:selected').val() == '')
                {
                    //this assumes that your empty value is ''
                    $(this).remove();
                }
            });

これは選択全体を削除するように見えますが、その原因thisは選択自体として定義されていることがわかっています。

私も試してみました $(select +'option[value=""]').remove();

現在、空の値を持つオプションを削除しようとしているだけです。それが達成できたら、DOMに関する限り、リストの最初の項目を公式に選択する方法を見つけます。

また、「select」に言及する価値があります。渡される変数は関数で以前に定義されているため、概念のその部分で機能しています。私が他の何かと混同しているとは誰も思わないように言っているだけです。

4

3 に答える 3

19
  • .filter()を使用して、空のオプション要素を除外し、一度にすべて削除できます

  • .prop()を使用して、次のような特別な属性を設定しますselected

コード:

$('select option')
    .filter(function() {
        return !this.value || $.trim(this.value).length == 0;
    })
   .remove();

$('select option')
    .first()
    .prop('selected', true);​

デモ

于 2012-06-13T20:15:12.810 に答える
15

これは簡単に行うことができます:

Element.find('option[value=""]').remove();
于 2015-07-01T14:07:00.460 に答える
0

POJSが救助に!

function fixSelectOptions(SelectId){
 var sel = document.getElementById(SelectId);
 for(var i = 0; i < sel.options.length; i++){
  if(sel.options[i].value === ""){
   sel.remove(i--);//decrease i to preserve future index references after removal
  }
 }
 sel.options.selectedIndex = 0;
}
于 2012-06-13T20:14:14.927 に答える