Javascript 仅在满足条件不工作时打印(即11)

Javascript 仅在满足条件不工作时打印(即11),javascript,jquery,browser,internet-explorer-11,Javascript,Jquery,Browser,Internet Explorer 11,如果用户尝试打印(使用ctrl+p)而未选中页面上的至少一个复选框,则会提示错误消息。在IE 11上,我确实看到了错误消息,但同时也出现了打印窗口(弹出窗口)。如何防止打印窗口关闭 $(window).bind('keydown', function (event) { if (event.ctrlKey || event.metaKey) { switch (String.fromCharCode(event.which).toLowerCase()) { case

如果用户尝试打印(使用ctrl+p)而未选中页面上的至少一个复选框,则会提示错误消息。在IE 11上,我确实看到了错误消息,但同时也出现了打印窗口(弹出窗口)。如何防止打印窗口关闭

$(window).bind('keydown', function (event) {

  if (event.ctrlKey || event.metaKey) {
    switch (String.fromCharCode(event.which).toLowerCase()) {
      case 'p':
        event.preventDefault();
        //alert('ctrl+p');
        printFunc();
        break;

      }
    }
});
还尝试:

window.onbeforeprint = function () {
    //alert('ctrl-p');
    printFunc();
    event.preventDefault();
    return false;
};
功能:

function printFunc() {
    var selectedListinsCount = selected_Listings.join('').split('').length;
    if (selectedListinsCount < 1) {
          if ($('#errmesg').length == 0) {
            $('.messageCenter').append('<span id="errmesg" class ="errmesg"> <span class="messageIcon"></span><span>Please select at least one listing</span></span>');
          }
        $('.messageCenter').show();
        return false;
    }
    else {
        $('.errmesg').remove();
        $('.messageCenter').hide();
    }

}
函数printFunc(){ var selectedListingsCount=所选列表。连接(“”)。拆分(“”)。长度; 如果(selectedListinsCount<1){ 如果($('#errmesg')。长度==0){ $('.messageCenter').append('请至少选择一个列表'); } $('.messageCenter').show(); 返回false; } 否则{ $('.errmesg').remove(); $('.messageCenter').hide(); } }
我同意,抑制浏览器的操作系统级功能可能不是最好的方法,而且随着时间的推移,这种可能性越来越小——基本上,如果你真的能做到这一点,那将是一种缺乏可持续性的黑客行为


在显示希望用户打印的数据之前,考虑更改流程以合并验证。

您应该使用
return
而不是
返回false

顺便说一句,除非您一直在使用旧版本的jQuery,否则请使用
on
而不是
bind
。也许不要使用按键?@Owlvark在打印前尝试了window.on,但问题仍然存在。我认为这是不可能的:显示“可取消:否”