Som*_*omk 36 javascript jquery
页面上的HTML有20个<input>字段,每个字段都以1到20的递增顺序命名和给出ID.
如果变量id设置为下一个顺序id(id+ 1),则此函数将使焦点应用于该字段.但是,当在当前输入字段外部单击时,如果输入的数字大于10,则最后一个输入字段将不会重新获得焦点,但会显示警报.
$(":input").focusout(function(){
var input = $(this).val();
var id = $(this).attr('id');
if(input > 10){
alert('You must enter a number between 0 and 10 '+id);
$("#"+id).select();
}
});
Run Code Online (Sandbox Code Playgroud)
如何设置最后一个输入字段以重新获得焦点?
Wes*_*rch 42
尝试更换:
$("#"+id).select();
Run Code Online (Sandbox Code Playgroud)
附:
$(this).focus();
Run Code Online (Sandbox Code Playgroud)
在这种情况下,$("#"+id)并且$(this)是相同的元素,并且我假设您focus在出现错误时想要元素.
旁白:我不相信id或name值可以与一些法律开始,你可能需要的东西前缀他们喜欢option1,option2等它可能会奏效,但它也可能会造成难以调试的问题后.最好在谨慎和最佳实践方面犯错误.
编辑:在没有开始focus()工作之后,我尝试了setTimeout并且能够实现它.我不确定为什么,或者这是否真的有必要,但似乎有效.
$(":input").focusout(function(){
var $this = $(this),
input = $this.val();
if (input > 10){
alert('You must enter a number between 0 and 10');
setTimeout(function(){
$this.focus();
}, 1);
}
});
Run Code Online (Sandbox Code Playgroud)
我很想知道是否有更好的方法来做这个或解释.我怀疑模糊和焦点事件不会按照使前一个方法成为可能的顺序触发?
演示:http://jsfiddle.net/zRWV4/1/
正如评论中所提到的,你应该最终确保该值是一个整数parseInt或类似的(你似乎已经意识到这一点).
| 归档时间: |
|
| 查看次数: |
96328 次 |
| 最近记录: |