我正在为孩子们构建一个基于网络的小型填字游戏。我的想法是为每个字母设置一个字符宽的输入文本字段。输入一个字符后,浏览器应该会自动跳转下一个文本字段。
感谢这个网站上的很多答案,我能够让 jQuery .next() 以我想要的方式旅行我的 DOM,所以感谢所有的贡献者!
因为这是给孩子的,所以有些字母是预先填好的。为了使用户更容易输入文本,我在输入之前选择了表单字段。此外,在按键之后,下一个字段被聚焦并被选中。我正在使用“keypress”而不是“keyup”,因为我读到它会使这对 iPad 更友好。
我到目前为止的代码是
$( document ).ready(function() {
$( "input:text" ).attr( "maxlength", 1 );
$( "input:text" ).keypress( function( event ) {
$nextField = $( this ).parent().next().children('input:text');
$nextField.focus();
$nextField.select();
});
$( "input:text" ).click(function( event ) {
$( this ).select();
});
});
这似乎在 Firefox 中运行良好,但在 Chrome 中,预填充的字母在输入字母后显示为空的表单字段。在 IE 中,在输入字符之前选择下一个字段,因此填充下一个字段,而不是单击的那个。
这是我的jsfiddle示例
我做错了吗,或者jQuery中是否存在跨浏览器问题?
也许我应该完全放弃表单元素并采用基于 div 的解决方案......