2012-04-19 2 views
0

нужно удалить существующий HTML, когда переключателе Вэл == 0. Вот мой HTML,Как удалить элемент по щелчку

<div class="info-cont"> 
    <ul class="map-list"> 
     <li> 
      <span class="left"> 
       <label>Name 1</label> 
      </span> 
      <span class="right"> 
       <select class="combo"> 
        <option selected="selected" value="0"></option> 
        <option value="1">F name</option> 
        <option value="2">M name</option> 
        <option value="3">L name</option> 
       </select> 
      </span> 
     </li> 
    </ul> 
</div> 

Примечание: Есть около 10 selectboxes на моей странице, как выше ,

и JQuery для выше есть

$(document).ready(function() { 
    $('#save').click(function() { 
     var comboLength = $('.combo').length; 
     var selectedLength = $('.combo option:selected[value!=0]').length; 
     if (comboLength == selectedLength) { 
      alert('Thanks all the fields are selected'); 
      return false; 
     } 
     if ($('.combo option:selected[value==0]')) { 
      $("div.info-cont ul.map-list li span.right").append("<br>Please select an appropriate value").addClass('validerror'); 
     } else { 
      $("div.info-cont ul.map-list li span.right").html(""); 
      $("div.info-cont ul.map-list li span.right").removeClass('validerror'); 
     } 
     return false; 
    }) 
}); 

Что мне нужно сделать в состоянии еще? (Я еще часть не функц). Также, когда я нажимаю кнопку отправки второй раз, я не должен добавлять html, к которому я уже получил в первый клик. Любая помощь? Спасибо ...

+1

'если ($ (» вариант комбо. : selected [value == 0] ')) 'всегда будет' true', так как объекты всегда оценивают 'true'. –

+0

'if ($ ('. Combo option: selected [значение == 0]'))' всегда будет true. вместо этого вы можете поставить 'if ($ ('. combo option: selected [value == 0]'). length> 0)' его true, когда ваш селектор возвращает элемент/элементы. – Mel

ответ

0

Изменение if к

if($('.combo option:selected').val() === '0'){ 

Все вопросы могут быть решены с

$(document).ready(function(){ 
    $('#save').click(function(){ 
     var combo = $('.combo'), // get all combo elements 
      selected = $('.combo').filter(function(){ 
       return $(this).find('option[value!="0"]:selected').length; 
      }), // get all valid combo elements 
      unselected = combo.not(selected); // get all non-valid combo elements 

     // clear previous error messages 
     combo 
      .closest('.right') // find containing .right element 
      .removeClass('validerror') // remove error class 
      .find('.errormessage') // find error message 
      .remove(); // remove error message 

     // chech if all combos are valid 
     if (combo.length === selected.length) { 
      alert('Thanks all the fields are selected'); 
      return false; 
     } 

     // highlight non-valid elements 
     unselected 
      .closest('.right') 
      .addClass('validerror') 
      .append('<div class="errormessage">Please select an appropriate value</div>'); 

     return false; 
    }); 
}); 

демо на http://jsfiddle.net/gaby/Y3RrH/

+0

моя форма содержит около 10 ящиков с одним классом, называемым комбо. Поэтому мне нужно проверить каждый select box val() и добавить текст html под конкретным полем выбора, для которого val() == 0. Мое значение по умолчанию для всех полей выбора равно 0. – steeve

+0

вы можете разместить HTML-код, потому что часть, которую вы назначаете 'validerror', не показывает, как элемент' .right' относится к элементу 'select'. –

+0

Вот он,

\t \t \t
    \t \t \t \t
  • \t \t \t \t \t \t \t \t \t
steeve

Смежные вопросы