繁体   English   中英

拦截标签击键事件后更改焦点

[英]Change focus following intercept of tab keydown event

我有一个表面上看起来很简单的问题,但是解决方案遇到了一些麻烦。 我正在将asp.net 3.5与jQuery1.8.3和jQuery-confirm一起使用。

在这一点上,我会说javascript和jQuery对我来说还很陌生,我对使用它们并不特别有信心。

我正在拦截文本框上的keydown事件,如果按下了Tab键,则会显示一个jQuery确认对话框。 在对话框执行该操作之后,我希望移至另一个文本框。 看起来很简单,这是我的代码。

$$("m_DiscountTextbox").on('keydown', function (e) {
var key = e.which || e.keyCode;
if (key == 9) {
    PromptForDiscount();
    document.getElementById($$("m_MarkupTextbox").attr("id")).focus();   
    }
});

function PromptForDiscount() {
$.confirm({
    title: 'Apply global discount',
    content: 'Discount will be applied to all line items. Click Confirm to continue, or Cancel to exit.',
    boxWidth: '30%',
    theme: 'material',
    buttons: {
        formSubmit: {
            text: 'Confirm',
            keys: 'enter',
            btnClass: 'btn-blue',
            action: function () {
                ApplyDiscount();
            }
        },
        cancel: function () {
        }
    },
    useBootstrap: false
});
return false;

$$调用选择器函数,该函数使我可以像.net操纵它们之前一样使用asp.net控件的ID。

使用chrome开发人员工具,我可以看到选择器在整个过程中都可以正常工作,甚至可以使用它们来检查目标文本框上的文本。 只是焦点更改不起作用。

最初,焦点转移到目标,并且一旦确认对话框,它将返回到调用文本框。 任何帮助将不胜感激。

提前致谢。

进一步的想法:

我现在想知道是不是对话框在操作完成时将控件传递回原始调用者,并且在此过程中撤消了对下一个文本框的焦点设置。 我尚无证据支持这一点,但似乎可以进行调查。

我还设置了一个基本的jsfiddle来演示该问题: https ://jsfiddle.net/8uap36fp/17/

在此上花了很多时间后,我问了对话框开发者的问题。

事实证明,此对话框的局限性将在以后的版本中解决。 从根本上解决该问题,您可以将对话框的lastFocussed属性设置为不存在的元素。

工作的jsfiddle在这里

感谢Rohith昨天的所有支持。

jsFiddle的代码

function PromptForDiscount() {
$.confirm({
    title: 'Test confirm',
    content: 'Lets hope this stays open.',
    boxWidth: '30%',
    buttons: {
        formSubmit: {
            text: 'Confirm',
            keys: 'enter',
            btnClass: 'btn-blue',
            action: function () {
                this._lastFocused = $('.thisElementDoesntExists');
                $("#arrivehere").focus();
            }
        },
        cancel: function () {
        }
    },
    useBootstrap: false
});
return false;
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM