Если вы установите пробел на флажке, он проверит флажок. Все было нормально, пока я не решил отключить событие 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>