我有什么样的表面看来是一个简单的问题,但是我在解决方案中遇到了一些麻烦。我正在使用jQuery1.8.3和jQuery确认的asp.net 3.5。在标签keydown事件拦截后改变焦点
我会说在这一点上,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;
的$$调用到一个选择器功能,它允许我使用asp.net控件的ID,因为它们是.NET轧液在他们面前。
使用chrome开发人员工具我可以看到选择器始终在工作,甚至在目标文本框上使用它们来检查文本。这只是焦点变化不起作用。
最初焦点转到目标上,一旦对话框被确认,它将恢复到调用文本框。任何援助将与此赞赏。
在此先感谢。
另外的想法:
我现在想知道,如果它是对话控制传递回原调用时,它的操作完成,并在这个过程中撤消焦点的设置上的下一个文本框。我还没有证据支持这一点,但看起来它可能成为调查的候选人。
我还建立了一个演示这一问题的基本的jsfiddle: https://jsfiddle.net/8uap36fp/17/
尽量集中()内确认/取消模式 – Ninjaneer
感谢Rohith的回调,我已经试过了,并没有奏效。我可以看到焦点移动到目标框,然后它恢复到源框。我想知道这是否与事件模型有关 – Jason
当模态被解散时,我想要关注下一个输入,而不是当它可见时。 – Jason