2014-08-30 4 views
0

Я использую два события нажатия запроса для динамического добавления и удаления полей ввода. Это работало отлично, и теперь внезапно это не так. Я действительно не могу найти проблемуСобытие Jquery click больше не отображается.

Вот код

<div> 
     <input type="image" id="btnAdd" src="~/Images/button_add.png" /> 
     <input type="image" id="btnDel" src="~/Images/button_remove.png"/> 
</div> 

Jquery

$(document).ready(function() { 
    $aantal = 0; 
    $('#btnAdd').click(function() { 
     var num = $('.clonedInput').length; 
     var newNum = new Number(num + 1);  

     var newElem = $('#input' + num).clone().attr('id', 'input' + newNum); 

     newElem.children(':eq(0)').children(':eq(0)').attr('id', 'check' + newNum).attr('name', 'check' + newNum).attr('checked', false).val(''); 
     newElem.children(':eq(0)').children(':eq(2)').attr('id', 'extra' + newNum).attr('name', 'extra' + newNum).css({ "background-color": "white" }).val(''); 
     newElem.children(':eq(1)').children(':eq(0)').attr('id', 'checkVerplicht' + newNum).attr('name', 'checkVerplicht' + newNum).attr('checked', false).val(''); 

     if (newNum <= 6) { 
      $('#input' + num).after(newElem); 
      $('#inputCheck' + num).after(newElemCheck); 
     } 

     $('#btnDel').attr('disabled', false); 
     $('#btnDel').show(); 
    }); 

    $('#btnDel').click(function() { 
     var num = $('.clonedInput').length; 
     var priceNum = $('.clonedInput').length; 
     $('#input' + num).remove();  
     $('#inputCheck' + num).remove(); 

     $('#btnAdd').attr('disabled', false); 

     if (num - 1 == 1) { 
      $('#btnDel').attr('disabled', true); 
      $('#btnDel').hide(); 
     } 
    }); 

    $('#btnDel').attr('disabled', true); 
    $('#btnDel').hide(); 

}); 

btnAdd работает отлично, но btnDel не делает. Когда я нажимаю кнопку «Добавить», должна быть показана кнопка удаления, поэтому добавленные поля также могут быть удалены (пока осталось только 1 поле и кнопка удаления снова скрыта). Это работало нормально, я не понимаю, почему он больше не работает.

+1

Я получаю 'Uncaught ReferenceError: newElemCheck не определен' в строке '$ ('# inputCheck' + num) .after (newElemCheck);'. Посмотрите на консоль. – Mritunjay

ответ

0

Вы ссылки на переменную «newElemCheck», что ISN» t определяется в любом месте кода, который вы разместили. Либо это должно существовать в глобальном пространстве имен, либо вам необходимо создать его (и назначить все, что вы хотели бы ссылаться) в функции btnAdd click.

+0

Спасибо, я забыл удалить ссылку на «newElemCheck». – Bouss

0

Использование на:

$(document).on('click','#btnDel',function() { 
     var num = $('.clonedInput').length; 
     var priceNum = $('.clonedInput').length; 
     $('#input' + num).remove();  
     $('#inputCheck' + num).remove(); 

     $('#btnAdd').attr('disabled', false); 

     if (num - 1 == 1) { 
      $('#btnDel').attr('disabled', true); 
      $('#btnDel').hide(); 
     } 
    }); 

чем использовать метод .он(), чтобы передать событие щелчка на будущие элементы, добавленные к DOM

+1

BTW это то же самое, что сказать '$ ('# btnDel'). Click (function() {..})'. Правильный синтаксис для делегирования - '$ (document) .on ('click', '# btnDel', function() {})'. Вы можете использовать любой статический родительский селектор в месте '$ (document)'. – Mritunjay

+0

Mritunjay верен. Функция .click() является просто псевдонимом для .on ('click', ...). Сокращение в основном, но это совершенно верно. –

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