Если вы установите пробел на флажке, он проверит флажок. Все было нормально, пока я не решил отключить событие click на родительском div, что я понял, также отключил пробел в этом флажке!
div1.addEventListener("click",function (e) {
if (e.preventDefault) e.preventDefault();
e.cancelBubble = true;
return false;
}, true);
<div id="div1">
<input id="chk1" type="checkbox">
</div>