Javascript 引导框输入在alt键上失去焦点

Javascript 引导框输入在alt键上失去焦点,javascript,meteor,bootbox,Javascript,Meteor,Bootbox,我目前正在尝试创建一个用户设置页面。在该页面上,用户可以通过按下打开弹出窗口的按钮来更改其电子邮件。在这个弹出窗口中,他应该能够键入他的新电子邮件。 问题是,当我按下Alt键时,我失去了输入的焦点。所以我无法键入任何电子邮件地址,因为我无法添加“@”(是的,我是法国人,有AZERTY键盘:/) 我的问题是:我该怎么做才能不失去焦点 我在Meteor and Jade中开发了我的web应用程序。这是我的弹出式模板: template(name="change_mail") table.tabl

我目前正在尝试创建一个用户设置页面。在该页面上,用户可以通过按下打开弹出窗口的按钮来更改其电子邮件。在这个弹出窗口中,他应该能够键入他的新电子邮件。 问题是,当我按下Alt键时,我失去了输入的焦点。所以我无法键入任何电子邮件地址,因为我无法添加“@”(是的,我是法国人,有AZERTY键盘:/)

我的问题是:我该怎么做才能不失去焦点

我在Meteor and Jade中开发了我的web应用程序。这是我的弹出式模板:

template(name="change_mail")
  table.table.table-responsive.large-table
    tbody
      tr
        td {{_ "current_mail" }} :
        td.table-text#old-mail
      tr
        td {{_ "new_mail" }} :
        td
          input.black#new-mail(type="text" name="mail")
和我的控制器:

Template.change_mail.rendered = function ()
{
  document.getElementById('new-mail').focus(); // Don't work 
}

"click #change_mail": function (event, template)
{
    event.preventDefault();
    var user = Meteor.user();
    bootbox.dialog(
    {
        title : t('change_mail'),
        message : "<div id='dialogNode'></div>",
        className : "info-popup",
        buttons : 
        {
            cancel :
            {
                label : t('back'),
                className : "btn-default btn-lg"
            },
            success : 
            {
                label : t('update'),
                className : "btn-info btn-lg",
                callback : function ()
                {
                    var mail = $("#new-mail").val();
                    if (mail === "")
                    {
                        return;
                    }
                    else
                    {
                        Meteor.call('updateMail', user._id, mail);
                        displayPopup(t("success"), t("success_change_mail"), t("ok"), "btn-success btn-lg", "success-popup");
                    }
                }
            }
        }
    });
    Blaze.render(Template.change_mail, $("#dialogNode")[0]);
    $("#old-mail").text(user.emails[0].address);
},
Template.change\u mail.rendered=函数()
{
document.getElementById('new-mail').focus();//不工作
}
“单击#更改邮件”:功能(事件、模板)
{
event.preventDefault();
var user=Meteor.user();
bootbox.dialog(
{
标题:t(“更改邮件”),
消息:“”,
类名:“信息弹出”,
按钮:
{
取消:
{
标签:t('back'),
类名:“btn默认btn lg”
},
成功:
{
标签:t('update'),
类名:“btn信息btn lg”,
回调:函数()
{
var mail=$(“#新邮件”).val();
如果(邮件==“”)
{
返回;
}
其他的
{
Meteor.call('UpdateEmail',用户id,邮件);
显示弹出窗口(t(“成功”)、t(“成功更改邮件”)、t(“确定”)、“btn成功btn lg”、“成功弹出窗口”);
}
}
}
}
});
Blaze.render(Template.change_mail,$(“#dialogNode”)[0]);
$(“#旧邮件”).text(user.emails[0]。地址);
},
编辑:我尝试使用放大弹出窗口更改库。当弹出窗口打开时,我获得了焦点,但我立即失去了它。
无论如何,当我按下Alt键时,我对这两个都失去了关注。我不明白为什么。

尝试使用JS DOM focus()函数

如果焦点仅设置在弹出窗口中的文本字段上,则可能会起作用

e、 g:

document.getElementById('email').focus();

这是因为你正在使用Ubuntu。 在ubuntu上,alt键是绑定到“键入您的命令”的系统键

参考:

所以,如果你的客户不使用ubuntu+Azerty键盘,那也没关系

作为一个肮脏的修复,当按下一个键时,您可以捕获一个事件,如果这个键是alt,只需使用

document.getElementById('email').focus();

我必须在哪里添加此行?当您调用电子邮件弹出对话框时。焦点应该放在输入文本中。就像你正在访问谷歌和光标焦点到搜索栏在网站的中间。在这种情况下,您可以输入所需的所有内容(包括AltGr),而无需调用任何浏览器函数。complementing@herzDev:
Template.change_mail.rendered=function(){document.getElementById('email').focus();}谢谢你的帮助,但是。。。这不会改变任何事情。当模板渲染时,我没有获得焦点,这是。。。很奇怪。无论如何,我不想在渲染输入时获得焦点,我想了解为什么按“alt”键会失去焦点,以及如何防止这种行为。