2012-05-10 3 views
1

Нажмите кнопку добавления. Я добавляю новую строку, используя клон последней строки, но хочу снять галочку, если она уже проверена в последней строке.Не удалось обновить проверенный статус флажка с помощью jQuery

Пожалуйста, проверьте весь код на: http://jsfiddle.net/MMDZX/

ответ

2

Изменить ломаную на:

jQuery("#dataTable tr:last").find("input[type='checkbox']").attr("checked", false); 

две проблемы:

  • Вы ищете на неправильный тип элемента ввода (type=text в отличие от type=checkbox).
  • Вы используете строку, а не логическое значение для установки атрибута, что было бы неплохо, если бы вы устанавливали его в состояние checked, так как строки являются правдивыми.

Также не требуется .children().children(). .find() (или ancestor-descendant) намного красивее в этом случае.

Demo.

1

Смотрите рабочий код здесь: http://jsfiddle.net/3rLqV/

Изменение Удалить отмеченные строки состояния для:

jQuery("#dataTable tr:last input[type='checkbox']").removeAttr("checked"); 

Ваши две главные проблемы были, что вы искали type='text', а флажок и вы не можете установить checked в значение false. Это либо там, либо нет.

+0

В jQuery 1.4.4 '.attr (" checked ", false)' снимет флажок, поскольку в 1.4.4 '.attr' изменяет как свойство, так и атрибут в этом случае. http://jsfiddle.net/MMDZX/17/ Реальная проблема заключается в том, что он заключен в кавычки. '.removeAttr' - хорошая альтернатива. –

0

попробовать это

// to add new row 
     jQuery("#addRow").click(function() { 
      var jqasdasuery = jQuery("#dataTable tr:last").clone(); 
      jqasdasuery.find('input[type=checkbox]').attr("checked", false); 
      jQuery("#dataTable").append(jqasdasuery); 
      setAttributes(); 
     }); 
0

Добавить

$(':checkbox',jqasdasuery).attr('checked', false);

после клона.

0
$(document).ready(function() { 
      $("#addRow").on('click', function() { 
       var jqasdasuery = $("#dataTable tr:last").clone(); 

       $("#dataTable tbody").append(jqasdasuery); 
       $("#dataTable tr:last").find(':checkbox').attr('checked', false); 
       $("#dataTable tr:last").find('select option:first').attr('selected', true); 
       setAttributes(); 
      }); 

      $("#deleteRow").on('click', function() { 
       if ($("#dataTable tr").length === $("#dataTable input:checked").length) { 
        alert("You cant delete all the rows") 
       } else { 
        $("#dataTable").find(':checked').each(function() { 
         $(this).parents('tr').remove(); 
        }); 
       } 

       setAttributes(); 
      }); 
     }); 

     function setAttributes() { 
      $("#dataTable tr").each(function (i) { 
       $(this).find(":checkbox").attr("name", "chk" + i); 
       $(this).find(":text").attr("name", "txt" + i); 
       $(this).find("select").attr("name", "country" + i); 
      }); 

      //$("#dataTable tr:last").find("input[type='text']").attr("checked", "false"); 
     }; 
+0

не использовать $ ("# dataTable tr: last"). Find ("input [type = 'text']"). Attr ("checked", "false"); в функции setAttributes(). потому что при удалении последняя строка будет снята. – Thulasiram

0

Чтобы удалить проверенное состояние флажка при клонировании последней строки. .

Вы можете добавить следующую строку,

jqasdasuery.find ("вход [тип = 'флажок']") атр ('проверено', ложь);

После

вар jqasdasuery = JQuery ("# Datatable Tr: последний") клона();.

в функции «#addRow» нажмите.