jQuery 将焦点更改为选项卡或焦点
(抱歉我的英语)
嗨!,我在一个应用程序中使用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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我不知道什么简单的方法
不适用于 Tab 键(只能使用鼠标来更改焦点)..所以我使用 keydown 事件和 focusout 之间的混合来解决。像这样:
其中 check() 是验证值的函数,tab 是检查是否按下 Tab 键的标志。
I don't know what the simple method
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:
where check() is a function to validate the value and tab is a flag to check if the tab key was pressed.
至少可以在 FF 和 chrome 中使用。
这里有一个小提琴: http://jsfiddle.net/Zabn4/
works in FF and chrome here at least.
here a fiddle: http://jsfiddle.net/Zabn4/
最现代的解决方案(jQuery 1.7+)是使用以下代码:
The most modern solution (jQuery 1.7+) is to use the following code: