2014-10-01 5 views
0

У меня есть код, который добавляет элементы из выпадающего меню в список. Когда пользователь отправляет форму, она идет через список и выбирает все элементы, а затем обновляет таблицы.Проверка JQuery для пустого элемента списка

Если пользователь удаляет все элементы из списка, я добавил код, чтобы добавить пустой список в список, чтобы список можно было обновить. Я должен был сделать это, потому что, если в списке не было элементов, оно не обновлялось, а старые элементы остались бы.

$.each(aListBoxes, function (idx, listBox) { 
    //If nothing in listbox add blank item so it can get updated 
    if ($("#" + listBox + " option").length < 1) { 
    ($("#" + listBox).append('<option value=""></option>')); 
    } 

Теперь я хочу, чтобы проверить, если есть более чем 1 пункт в ListBox, и если да, удалите этот пустой элемент, если он существует.

if ($("#" + listBox + " option").length > 1) { 
    $("#" + listBox + " option").each(function() { 

    //if item value is empty then remove 

Весь сценарий до сих пор:

<script type="text/javascript"> 
    //for pre-selection of all elements in every list box 
    $(document).ready(function() { 
     var aListBoxes = []; 
     // get a list of all the listboxes on the form 
     $("[id*=" + "lbx" + "]:visible").each(function() { 
      aListBoxes.push(this.id); 
     }); 

     //on btnSubmit click because the form gets posted each time an autopostback field is hit. 
     $("input[name=btnSubmit]").click(function() { 
      //just before submission, go through each of the listboxes and if they contain anything, select everything. 
      $.each(aListBoxes, function (idx, listBox) { 
       //If nothing in listbox add blank item so it can get updated 
       if ($("#" + listBox + " option").length < 1) { 
        ($("#" + listBox).append('<option value=""></option>')); 
       } 
       //If more than 1 item check for blank and remove 
       if ($("#" + listBox + " option").length > 1) { 
        $("#" + listBox + " option").each(function() { 
         //if empty 
         //remove 
         }); 
       } 

       //select all before submitting 
       if ($("#" + listBox + " option").length > 0) { 
        $("#" + listBox + " option").each(function() { 
         $(this).prop('selected', 'selected') 
        }); 
       } 
      }); 
     }); 
    }); 
</script> 

ответ

1

Я надеюсь холостыми варианты вы имеете в виду их значения пусты. Попробуйте это: -

if ($("#" + listBox + " option").length > 1) { 
      $(this).each(function() { 
       if($(this).val()=="") 
        $(this).remove(); 
      }); 
    } 

, если вы имеете в виду текст пуст для пустых опций, а затем написать $(this).text()=="" вместо $(this).val()==""

+0

отлично работает! – BringQBasicBack

+0

ваш прием. Пожалуйста, согласитесь, чтобы другой знал также ответ, если они ищут то же самое. Счастливое кодирование !! –

0

JQuery filter разработан специально для такого рода вещи, и избегает с помощью each:

if ($("#" + listBox + " option").length > 1) { 
     $(this).filter(function() { 
      return $(this).val()==""; 
     }).remove(); 
}