从表单数组中获取特定的复选框单击事件

时间:2014-09-26 10:16:39

标签: javascript jquery

我有一张表,每行都是一个表格。在行的单元格中是删除按钮。单击复选框时,我需要一个jquery模式对话框确认删除。 我尝试了javascipt,但只为第一行工作。

$(document).ready(function(){
    $("#dialog").hide();
});
$('#Wcheckboxcd1').click(function(e) {
    var form = $("form").attr("id"); 
    $("#dialog").dialog({
      buttons : {
        "Διαγραφή" : function() {
          document.getElementById(form).submit();
          $(this).dialog("close");
        },
        "Ακύρωση" : function() {
        document.getElementById(form).Wcheckboxcd.checked = 0;
          $(this).dialog("close");
        }
      }
    }); 
})

1 个答案:

答案 0 :(得分:0)

  1. 变化:

    var form = $("form").attr("id")
    

    ......将成为:

    var form = $(this).closest('tr').find('form').attr('id');
    

    这将从“删除”按钮的行中选择表单,而不是始终是第一个form。有关详细信息,请参阅closest()的文档。

  2. 您正在重复使用ID Wcheckboxcd1。 ID必须在整个页面中是唯一的。当您使用表单时,请使用类或name属性。

  3. 另请注意,当您接近让jQuery对象首先包含表单元素时,使用document.getElementById是非常多余的。请考虑使用类似下面的代码;

    $('[name="Wcheckboxcd1"]').click(function(e) {
        $("#dialog").dialog({
          buttons : {
            "Διαγραφή" : function() {
              $(this).closest('tr').find('form').submit();
              $(this).dialog("close");
            },
            "Ακύρωση" : function() {
              this.checked = false;
              $(this).dialog("close");
            }
          }
        }); 
    })
    

    ..以上假设您已经改变了:

    <input type="checkbox" id="Wcheckboxcd1" />
    

    为:

    <input type="checkbox" name="Wcheckboxcd1" />