jQuery代码在Firefox中无法正常工作

时间:2015-01-13 07:56:31

标签: jquery

此代码在Chrome中运行良好,但在Firefox(最新版本)中存在一些问题。 见Jsbin: http://jsbin.com/fasuxofavo/1/edit

$(document).ready(function(){

$(".typinganswer input").on('keypress', function(e)
{
    if(e.keyCode==13){
        alert("finish");
    }

    if($(this).val('') != "")
        $(this).val('');

    if($(this).is(':last-child'))
        $(this).select();

    $(this).next().select();

})
.on('keyup',function(e)
{
    if(e.keyCode==8){
        $(this).prev().select();
        return;
    }
})

$(".typinganswer input").on('click', function(e)
{
    $(this).select();
});


})

退格键无法正常工作。帮我解决这个问题。 见Jsbin: http://jsbin.com/fasuxofavo/1/edit

2 个答案:

答案 0 :(得分:1)

if(e.keyCode!=8){...}

围绕你的按键事件动作如下:

$(document).ready(function(){

$(".typinganswer input").on('keypress', function(e)
{
    if(e.keyCode!=8){
    if(e.keyCode==13){
        alert("finish");
    }

    if($(this).val('') !== "")
        $(this).val('');

    if($(this).is(':last-child'))
        $(this).select();

    $(this).next().select();

    }

})
.on('keyup',function(e)
    {
    if(e.keyCode==8){
        $(this).prev().select();
        return;
    }
});

$(".typinganswer input").on('click', function(e)
{
    $(this).select();
});


});

答案 1 :(得分:1)

问题是,当你单击 Backspace 时,两个处理程序都被调用,你应该忽略keypress处理程序中的 Backspace 。把它放到回调的开头:

$(".typinganswer input").on('keypress', function (e) {
    if (e.keyCode == 8) {
        return;
    }
    ...
});

或者,如果您想使用许多不同的密钥,我建议您在switch上使用keyCode语句。