输入键不关闭 jquery 对话框

Posted

技术标签:

【中文标题】输入键不关闭 jquery 对话框【英文标题】:Enter key do not close jquery dialog box 【发布时间】:2014-05-19 07:13:25 【问题描述】:

当我点击 Ok jquery window close 时,我有一个 jquery 对话框,但是当我点击 enter jquery window close 并再次重新打开时。如果有人敲回车关闭jquery对话框,如何处理。

请输入我的密码。

function showDialog(strText,actionUrl,object)
  $( "#dialog:ui-dialog" ).dialog( "destroy" );
  var w = screen.availWidth;
  var h = screen.availHeight;
  var leftPos = (w-350)/1.5, topPos = (h-170)/1.5;

  document.getElementById("validateMsg").innerhtml="<p align='center' style='font-size: 13px;'>"+strText+"</p>";

  $("#validateMsg" ).dialog(
    modal: true,
    autoOpen: false,
    width:350,
    height:170,
    title:"Message",
    dialogClass: "noclose",
    buttons: 
      "Ok": function() 
        // on enter control comes here but window close and re open again but if I click on ok then window close 
        $("#validateMsg").dialog( "close" );
        $("body").css("overflow", "auto");
        $("#validateMsg").dialog('destroy').empty();
        if(actionUrl.length != 0)
        location.href=actionUrl;
      

      if(object.length != 0)
      object.focus(); 
    
  


);

     $('body').on('keydown', '#validateMsg', '', function (e) 
                     if (e.keyCode == "13") 
                         $(this).dialog('close');
                     
                 );

//$.scrollTo(0, 0);

$("#validateMsg").dialog('open');


//   return false;

// 已编辑 如果我删除下面的代码,则输入正常,但我希望将焦点重新放在输入文本上

 if(actionUrl.length != 0)
        location.href=actionUrl;
      

      if(object.length != 0)
      object.focus(); 
    

如何在上述代码中按回车键关闭窗口。

问候,Pise

【问题讨论】:

请提供一个jsfiddle @CodingAnt 对不起,我是 jquery 的新手,并且看过 jsfiddle 网站,我们可以在其中测试我们的代码,但为什么要提供 jsfiddle。 【参考方案1】:

试试这个

$(function () 
     $('body').on('keydown', '#validateMsg', '', function (e) 
         if (e.keyCode == "13") 
             $(this).dialog('close');
         
     );
 );

DEMO HERE

【讨论】:

我收到以下错误 TypeError: $(...).on is not a function 而我的代码是 ` $( document ).ready(function() $('body').on ('keydown', '#validateMsg', '', function (e) if (e.keyCode == "13") $(this).dialog('close'); ); ); ` 我遇到了同样的错误,我已经更新了代码。请查看更新的代码。 TypeError: $(...).on 不是函数 object.focus();调用 keyup 函数,然后它再次调用 jquery 对话框,它进入无限循环。所以现在我必须阻止 focus() 上的 keyup 功能,然后我的问题就会得到解决【参考方案2】:

此解决方案也有效:

$('.my-dialog').on('keypress', function(e) 
  if (e.keyCode == $.ui.keyCode.ENTER) 
    $('.my-dialog').dialog("close");
  
);

【讨论】:

以上是关于输入键不关闭 jquery 对话框的主要内容,如果未能解决你的问题,请参考以下文章

怎样使对话框关不了

Vue/Vuetify:显示/隐藏父组件的对话框。 Esc 键不起作用

桌面鼠标右键不出菜单怎么办

使用 DialogBoxIndirect 时,如何在对话框关闭时获取用户输入的文本?

SVN安装后,右键不显示SVN菜单项

excel中方向键不能移动格子