使用javascript和HTML将IOS上的“return”/“Go”键更改为“Next”

时间:2014-01-01 07:17:03

标签: jquery html ios ipad safari

我想要做的就是改变他为iPad上的下一个键返回键我已经尝试过的HTML表单

    $(document).ready(function(){
        $("input").not( $(":button") ).keypress(function (evt) {
        if (evt.keyCode == 13) {
        iname = $(this).val();
        if (iname !== 'Submit'){
        var fields = $(this).parents('form:eq(0),body').find('button, input, textarea, select');
        console.log(fields);
        var index = fields.index( this );
        if ( index > -1 && ( index + 1 ) < fields.length ) {
            var id = fields.eq( index + 1 ).attr("id")
            alert("document");
            document.getElementById(id).focus();
            alert("without 0");
            $("#"+id)[0].focus();
            $("#"+id)[0].click();
            alert("with 0");
            $("#"+id)[0].focus();
        }
        return false;
        }
        }
        });
    });

但这在iPad上不起作用我读到苹果不会通过焦点或点击jquery事件打开键盘,以避免偶尔弹出键盘而没有用户的正确交互(点击触摸)。另外,这在浏览器中正常工作。

这也有Go按钮而不是“Next”我想要的是当用户点击Next键时它应该关注我表单的下一个输入字段

我也试过

$(document).ready(function () {
var focused = $('input:first'); //this is just to have a starting point
        $(document).keypress( function (e) {
            if (e.keyCode == 13) {e.preventDefault();alert("keyPressed");
                focused.next('input').trigger('touchstart'); //trigger touchstart
            }
        });
        $('input').on('touchstart', function () {
            $(this).focus();
            focused = $(this);
        });
    });

但这完全适用于自定义输入按钮,但不适用于Return / Go按钮,我特别希望iPad上的Return / G按钮具有此功能

1 个答案:

答案 0 :(得分:0)

IOS / Safari仅在触摸事件处理程序内“接受”焦点。解决方法可能是,您可以触发触摸事件并在其中插入.focus()。像这样的东西。

使用:

document.getElementById(id).trigger('touchstart'); 
            //or
$('#'+id).trigger('touchstart');

代替:

document.getElementById(id).focus();

Touchstart事件 -

$('input').on('touchstart', function () {
    $(this).focus();   // inside this function the focus works
    focused = $(this); 
});

<强> Demo