jQuery更改聚焦选项卡或聚焦输出
jQuery change focus on tab or focusout
(对不起我的英语)
嗨!,我在一个应用程序中使用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>
在另一部分,我有一个按钮,当点击这个按钮时,在表中创建另一行。
此表和按钮的容器存在于模板内。。这些模板是使用undercore.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背景会发生变化。
当我执行这段代码时,按钮会更改背景,但焦点会随之更改为url栏。这发生在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并专注于按钮。
我不知道的简单方法是什么
$('your_selector').focusout(function(){
$('#more_button').focus();
});
无法使用制表键(只能使用鼠标更改焦点)。。所以我使用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键的标志。
$('your_selector').focusout(function(){
$('#more_button').focus();
});
至少在FF和chrome中工作。
这里有一把小提琴:http://jsfiddle.net/Zabn4/
最现代的解决方案(jQuery 1.7+)是使用以下代码:
$('#your-input').on('focusout', function(e){
$('#submit-btn').focus();
});
相关文章:
- 在JavaScript中输出转义字符
- 如何在jQuery中将函数的输出分配给变量
- 将事件聚焦/模糊在可编辑内容的元素上
- jQuery自动完成阻止选择后聚焦
- Javascript,输出结果后页面不断刷新
- 使用向下箭头键(与tab键一样)聚焦下一个输入
- 当没有文本输入聚焦时检测空格键按下
- Datetime格式为Friendly Time.Moment JS输出错误
- 如何将angularjs中的javascript字符串输出为循环数组
- HTML5FileReader输出到D3.js图表
- console.log以外的Javascript输出函数
- Eloquent JavaScript递归示例如何终止为返回1,但仍然输出指数值
- PHP中的数组输出
- 以不同的顺序输出数据
- 使用Rivets.js输出类
- 在Chrome扩展内部输出Google API调用
- 如何为d3.js图表输出组织/嵌套数据
- 将IndexedDB中的数据拉入数组,并通过ReactJS输出
- jQuery更改聚焦选项卡或聚焦输出
- 如何将Interval设置为就绪,停止在文本区域聚焦,然后开始在文本区域焦点输出