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

问题描述:

我有一个表,每一行都是一个窗体。在一行的单元格上是一个删除按钮。点击复选框时,我需要一个jQuery模式对话框确认。 我尝试了javascipt incuded但只为第一行工作。从窗体数组中获取特定的复选框单击事件

$(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"); 
     } 
     } 
    }); 
}) 
+0

使用类复选框。不要为多个复选框元素使用相同的ID – 2014-09-26 10:18:47

+0

是的我为每个表单的所有复选框保留了相同的ID bau如何获取特定复选框的点击? – Giorgos 2014-09-26 10:39:30

+0

所有的拳头,你应该明白,ID应该是唯一的HTML元素。您应该在复选框上添加类,然后使用类来绑定复选框事件,而不是放置标识。用这个来绑定''('。Wcheckboxcd1')' – 2014-09-26 10:52:48

  1. 变化:

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

    ...是:

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

    这从 “删除” 按钮的行内选择的形式,而不是总第一个form。有关更多信息,请参阅closest()的文档。

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

还请注意,这是相当多余供您使用document.getElementById,当你接近有包含在首位的表单元素的jQuery对象。考虑使用下面的代码代替;

$('[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" /> 
+0

亲爱的马特问题是复选框ID。所有复选框上都有相同的ID。所以$('#Wcheckboxcd1')。click(function(e){is not working。我需要使用$ form。('#Wcheckboxcd1')。click(function(e){但我不知道如何。 – Giorgos 2014-09-26 10:42:18

+0

@Giorgos:看到我的更新。 – Matt 2014-09-26 11:44:10