jQuery 将焦点更改为选项卡或焦点

发布于 2025-01-08 09:35:49 字数 1384 浏览 1 评论 0原文

(抱歉我的英语)

嗨!,我在一个应用程序中使用jquery,其中我有一个动态创建的表,其中包含如下文本输入:

<td><input type="text" id="code"></td>
<td><select id="type"><option value="0">Normal</option><option value="1">Other</option></select></td>
<td><input type="text" id="price" class="price"></td>
<td><input type="text" id="total"></td>

在其他部分我有一个按钮,当单击此按钮时,在中创建另一行桌子。

该表格和按钮的容器存在于模板内。该模板是使用 underscore.js 呈现的。

现在的问题是:我需要按顺序迭代输入:代码、类型、价格。当我填写输入价格时,我计算总计并显示在输入中,然后我需要将焦点更改为按钮(#more_button)以让用户单击或按 Enter 键在表中创建另一行。

我使用这个:

$('.price').blur(function(e){
    _this.setTotal($(e.currentTarget).val());
    $('#more_button').removeClass('inactive').focus();

    e.preventDefault();
    e.stopPropagation();
});

当 #more_button 聚焦时,CSS 背景发生变化。

当我执行这段代码时,按钮会更改背景,但焦点会立即更改为网址栏。这发生在 Firefox 和 Chrome 中。

我尝试用它来设置焦点:

   $('.price').blur(function(e){
    _this.setTotal($(e.currentTarget).val());
    $('#more_button').removeClass('inactive').;
    setTiemout(function(){
         $('#more_button').focus();
    },100);
    e.preventDefault();
    e.stopPropagation();
}); 

但也不起作用......

你能给一些指导来完成这个吗?

当按 Tab 或单击页面的其他部分时,用户可以更改 input.price 的焦点。此时我需要触发 seTotal 并将焦点放在按钮上。

(sorry for my english)

Hi!, i'm using jquery in an app where i have a dinamycally created table with text inputs inside like this:

<td><input type="text" id="code"></td>
<td><select id="type"><option value="0">Normal</option><option value="1">Other</option></select></td>
<td><input type="text" id="price" class="price"></td>
<td><input type="text" id="total"></td>

and in other part i have a button, when this button is clicked, create another line in the table.

The container of this table and button exists inside a template.. this templates is rendered using underscore.js

Now the problem: I need to iterate over the inputs in order: code, type, price. When i fill the input price i calculate the total and shows up in the input, and then i need to change focus to the button (#more_button) to let the user click or press enter to create another line in table.

I use this:

$('.price').blur(function(e){
    _this.setTotal($(e.currentTarget).val());
    $('#more_button').removeClass('inactive').focus();

    e.preventDefault();
    e.stopPropagation();
});

When the #more_button is focused the css background change.

When i execute this piece of code, the button change the background but the focus inmediatly change to url bar. This happend in firefox and Chrome.

I try to use this to set the focus:

   $('.price').blur(function(e){
    _this.setTotal($(e.currentTarget).val());
    $('#more_button').removeClass('inactive').;
    setTiemout(function(){
         $('#more_button').focus();
    },100);
    e.preventDefault();
    e.stopPropagation();
}); 

But don't work either.....

Can you give some guideline to acomplish this?

The user can change the focus of input.price when press Tab or click in other part of the page.. in this moment i need to trigget seTotal and focus on the button.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

云胡 2025-01-15 09:35:49

我不知道什么简单的方法

$('your_selector').focusout(function(){
   $('#more_button').focus();
});

不适用于 Tab 键(只能使用鼠标来更改焦点)..所以我使用 keydown 事件和 focusout 之间的混合来解决。像这样:

$('.price').bind('keydown',function(e){
    if(e.keyCode === 9){//Tab key
    tab = true;
    check(e);
        return false;
}

 }).bind('focusout',function(e){
if(!tab){
    check(e);
}else{
    tab = false;    
} 
e.preventDefault();
return false;
 });

其中 check() 是验证值的函数,tab 是检查是否按下 Tab 键的标志。

I don't know what the simple method

$('your_selector').focusout(function(){
   $('#more_button').focus();
});

doesn't work with tab key (only with the mouse to change the focus).. so i solve using a mix between keydown event and focusout. like this:

$('.price').bind('keydown',function(e){
    if(e.keyCode === 9){//Tab key
    tab = true;
    check(e);
        return false;
}

 }).bind('focusout',function(e){
if(!tab){
    check(e);
}else{
    tab = false;    
} 
e.preventDefault();
return false;
 });

where check() is a function to validate the value and tab is a flag to check if the tab key was pressed.

自控 2025-01-15 09:35:49
$('your_selector').focusout(function(){
  $('#more_button').focus();
});

至少可以在 FF 和 chrome 中使用。

这里有一个小提琴: http://jsfiddle.net/Zabn4/

$('your_selector').focusout(function(){
  $('#more_button').focus();
});

works in FF and chrome here at least.

here a fiddle: http://jsfiddle.net/Zabn4/

风苍溪 2025-01-15 09:35:49

最现代的解决方案(jQuery 1.7+)是使用以下代码:

$('#your-input').on('focusout', function(e){
   $('#submit-btn').focus();
});

The most modern solution (jQuery 1.7+) is to use the following code:

$('#your-input').on('focusout', function(e){
   $('#submit-btn').focus();
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文