2016-03-16 38 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'' –

相關問題