2014-01-09 4 views
1

У них есть код, который добавляет и удаляет элементы управления динамической формы. Методы добавления и удаления работают нормально. Но мне нравится, если существует только один элемент управления, а не удалять его.Глобальная переменная счетчика

я определил следующий вар, вне $ (документ) .ready Область применения:

var Alumnos = {}; 

и инициализировать внутри $ (документ) .ready:

// Valor inicial de casilleros renderizados. 
Alumnos.count = 3; 

Метод, который будет удалять элементы управления :

// Elimina un bloque 
$(document).on('click','.closable',function(){ 
    if(Alumnos.count > 1){ 
     var idRow = $(this).attr('data-toggle'); 
     var victim = $(idRow + " .row-fluid:last-child"); 
     victim.remove(); 

     var childs = $(idRow).children(); 
     if(childs.length === 0) 
     { 
      $(idRow).remove(); 
      $(this).remove(); 
      Alumnos.count -= 1; 

     } 
    } 
    console.log(Alumnos.count); 
    return false; 
}); 

Значение Alumnos.count сохраняется после удаления. Есть идеи ?

UPDATE 1

Когда пользователь нажимает на кнопку «Добавить еще», код, создать форму строки с 3 управления, от прототипа. Потому что, я не могу использовать детей. Мне нужно, чтобы пользователь не удалял все элементы управления.

+1

движение 'Alumnos.count - = 1;' 'выше, если (childs.length === 0)' –

+0

Может быть 'если (childs.length === 0) condition' не дает' true' , вы можете создать онлайн-демонстрацию своего кода. –

ответ

2

Я думаю, вы должны иметь:

if(Alumnos.count >= 1){ //Probably if there is only 1, it's erasable. You had > 

И подвигать убыл снаружи, как это:

var childs = $(idRow).children(); 
    if(childs.length === 0) 
    { 
     $(idRow).remove(); 
     $(this).remove();    
    } 
    Alumnos.count -= 1; //This was moved 

Надеется, что это помогает. Cheers

+0

Если OP хочет уменьшить счет после удаления элемента idRow, то? –

+0

Возможно, или, возможно, при удалении "жертвы" –

0

Спасибо за все ваши ответы !! Я нашел способ контролировать удаление элементов с подсчетом childs. Может быть, это не лучший код, но работает.

$(document).on('click','.closable',function(){ 

    // Get the id of the row. 
    var dataToggle = $(this).attr('data-toggle'); 
    // Get the row 
    var row = $(dataToggle); 

    // if isnt first row (#id0), ok, remove all if you want. 
    // if is first row (#id0) and have more than one child, happy remove ^^ 
    if((dataToggle === "#id0" && row.children().length > 1) || dataToggle !== "#id0"){ 

     // remove code... 
    } 

    return false; 
}); 
Смежные вопросы