2016-03-16 36 views
1

默认情况下,我有两个按钮被禁用,我希望在点击至少一个复选框后启用它们。但由于某种原因,我不确定为什么按钮没有被启用。我遵循了几个类似的StackOverflow问题。这是我有:Jquery - 选择复选框时未启用按钮

$('document').ready(function(){ 
    var checkboxes = $("input[type='checkbox']") 
    checkboxes.click(function() { 
     $('#seen').prop('disabled', !checkboxes.is(":checked")); 
     $('#delete').prop('disabled', !checkboxes.is(":checked")); 
}); 

user = $(location).attr('href').split('/').slice(-1)[0]; 
$.ajax({ 
url: '/userdata/' + user, 
type: 'GET', 
success: function (response) { 
    var trHTML = ''; 
    var is_user = response.is_user; 
    if (is_user === true) { 
    $.each(response.links, function (i, item) { 
     trHTML += '<tr><td style="text-align:center;" class="col-md-2"><input type="checkbox" value='+item.id+' name="link"/></td>' + 
        '<td class="col-md-8"><a href="'+item.url+'">'+item.name+'</a></td><td style="text-align:center;" class="col-md-2">'+item.date+'</td></tr>'; 
    }); 
    $('.todolist').append(trHTML); 
    } 
    else { 
     $.each(response.links, function (i, item) { 
     trHTML += '<tr>' + 
        '<td class="col-md-8"><a href="'+item.url+'">'+item.name+'</a></td><td style="text-align:center;" class="col-md-2">'+item.date+'</td></tr>'; 
    }); 
     $('.todolist').append(trHTML); 
    } 
} 
}); 

}); 


function onClickSeen() { 
/* declare an checkbox array */ 
var chkArray = []; 

/* look for all checkboes that have a class 'chk' attached to it and check if it was checked */ 
$('input[name="link"]:checked').each(function() { 
    chkArray.push($(this).val()); 
}); 

/* we join the array separated by the comma */ 
var selected; 
selected = chkArray.join(','); 

//alert("You have selected " + selected) 

$.ajax({type: "POST", 
      url: "/set-seen", 
      data: { 'selected': selected }, 
      success:function(result){ 
       location.reload(true); 
     }}); 
} 

function onClickDelete() { 
/* declare an checkbox array */ 
var chkArray = []; 

/* look for all checkboes that have a class 'chk' attached to it and check if it was checked */ 
$('input[name="link"]:checked').each(function() { 
    chkArray.push($(this).val()); 
}); 

/* we join the array separated by the comma */ 
var selected; 
selected = chkArray.join(','); 

//alert("You have selected " + selected) 

$.ajax({type: "POST", 
      url: "/delete-links", 
      data: { 'selected': selected }, 
      success:function(result){ 
       location.reload(true); 
     }}); 
} 

这是两个按钮的HTML看起来像:

<div class="btn-toolbar"> 
      <button type="button" class="btn btn-primary" onclick="onClickSeen()" id="seen" disabled>Mark as Seen</button> 
      <button type="button" class="btn btn-danger" onclick="onClickDelete()" id="delete" disabled>Delete</button> 
</div> 

<table class="table table-striped table-bordered todolist"> 

</table> 

我真的很感激这里一些帮助。我甚至尝试用on方法替换click。

+0

..你的HTML中的复选框在哪里? –

+0

如果您查看JavaScript代码,我从AJAX GET请求获得响应后生成它们 – ueg1990

回答

0

http://jsbin.com/rigubi/2/edit?html,js,output

您需要委派你的点击,因为你dymanically产生的复选框

使用.on()方法类似

$("body"/*use rather a static parent ID here*/).on("click", "[name=someCkbName]", function() { 

    var checkboxes = $("[name=someCkbName]"); // get all 
    $('#seen, #delete').prop('disabled', !checkboxes.is(":checked")); 

}); 

.on()故事是这样的:http://api.jquery.com/on/

$("staticSelector").on("eventName", "dynamicChildSelector", callbackFn); 
+0

我有几个问题。 1)为什么在身上贴标签? 2)我们如何限制具有给定名称的复选框上的点击事件? – ueg1990

+0

也你的建议没有奏效。也许属性名称(':checkbox')不正确? – ueg1990

+0

@ ueg1990您不必使用''body''而是''#staticParent'' –

相关问题