Javascript 使用上/下箭头键调用函数(并传递参数)

Javascript 使用上/下箭头键调用函数(并传递参数),javascript,jquery,Javascript,Jquery,我有一个调查,其中有许多文本输入,采用数值,每个文本输入都有一对递增/递减按钮。我的工作职能如下: HTML: 对于如何使用向上/向下键启动递增/递减,我非常感谢您的澄清 多谢各位 svs尝试以下方法: $(document).keypress( function(eventObject) { var key = (eventObject.keyCode ? eventObject.keyCode : eventObject.which); if(key==38) {

我有一个调查,其中有许多文本输入,采用数值,每个文本输入都有一对递增/递减按钮。我的工作职能如下:

HTML:

对于如何使用向上/向下键启动递增/递减,我非常感谢您的澄清

多谢各位

svs

尝试以下方法:

$(document).keypress( function(eventObject) {
    var key = (eventObject.keyCode ? eventObject.keyCode : eventObject.which);
    if(key==38) {
        var btnClass = "increment";
    } else
    // DOWN arrow
    if(key==40) {
        var btnClass = "decrement";
    }
    incDec(btnClass);
});
试试这个:

$(document).keypress( function(eventObject) {
    var key = (eventObject.keyCode ? eventObject.keyCode : eventObject.which);
    if(key==38) {
        var btnClass = "increment";
    } else
    // DOWN arrow
    if(key==40) {
        var btnClass = "decrement";
    }
    incDec(btnClass);
});

您的问题是,
incDec
函数的设计目的不是将类作为输入参数-它使用调用事件的对象(即按钮上的单击事件)

这有点老套,但是下面这样的怎么样?将单击处理程序分配给每个按钮,然后调用相关按钮的单击事件

$( function ( ) {
    $('button').click( incDec );

    $('input').keydown( function(eventObject) {

        // UP arrow
        if(eventObject.which==38) {
            var btnClass = "increment";
        } else

        // DOWN arrow
        if(eventObject.which==40) {
            var btnClass = "decrement";
        }

        // Invoke the click event for the inc/dec button inside the containing div.
        $('button.'+btnClass, $(this).parent( )).click( );
    });
});

这是一个带有两个这样的盒子的JSFIDLE。当您在文本框内使用上/下箭头键时,它会正确递增/递减

您的问题是,
incDec
函数的设计目的不是将类作为输入参数-它使用调用事件的对象(即按钮上的单击事件)

这有点老套,但是下面这样的怎么样?将单击处理程序分配给每个按钮,然后调用相关按钮的单击事件

$( function ( ) {
    $('button').click( incDec );

    $('input').keydown( function(eventObject) {

        // UP arrow
        if(eventObject.which==38) {
            var btnClass = "increment";
        } else

        // DOWN arrow
        if(eventObject.which==40) {
            var btnClass = "decrement";
        }

        // Invoke the click event for the inc/dec button inside the containing div.
        $('button.'+btnClass, $(this).parent( )).click( );
    });
});

这是一个带有两个这样的盒子的JSFIDLE。当您在文本框内使用上/下箭头键时,它会正确递增/递减

incDec
未设置为将类作为参数-它使用事件调用方的类,因此我认为这不起作用。@ianhales-是的,我看到了你的帖子-我要离开办公桌几天,但我回来后会进一步查看-如果不行,我会删除它work@ZacharyKniebel谢谢你,扎克,帮我进入状态,干杯。
incDec
没有设置为将类作为参数-它使用事件调用方的类,所以我认为这不起作用。@ianhales-是的,我看到了你的帖子-我要离开办公桌几天,但是当我回来的时候,我会更仔细地看这个,如果没有,我会删除它work@ZacharyKniebel谢谢扎克,帮我进入状态,干杯,谢谢先生们。我已经编辑了我的问题,因为事实上我的incDec函数使用了btnClass参数。仍然没有欢乐;我特别是新手re:传递参数/参数等。谢谢各位。我已经编辑了我的问题,因为事实上我的incDec函数使用了btnClass参数。仍然没有欢乐;我特别是新手re:传递参数/参数等。Thx-Ian,但将您的函数添加到我的函数中,箭头键和按钮都会递增/递减2。我仍在尝试,但这不是我的领域,所以信心处于中低水平:)干杯,SVS请你告诉我你正在使用的代码,因为它在JSFIDLE中对我有效,所以我想知道是否有东西被调用了两次。是的,伙计,有东西被调用了两次,因为我发呆了;)。。删除我的click语句解决了这个问题。然而,我发现了另一个问题,尽管与我的问题或你的答案无关:当按下键时,FF显示数字的形式历史,与滚动输入值的位置不匹配。无论如何,非常感谢,我想我可以这样运送。非常感谢!听起来您需要在这些表单元素上禁用自动完成。不幸的是,基于谷歌的快速搜索,似乎没有一种符合标准的方法来实现这一点,但是你可以将
autocomplete=“off”
添加到你的输入框中。Thx Ian,但是将你的功能添加到我的功能中,箭头键和按钮都会增加/减少2。我仍在尝试,但这不是我的领域,所以信心处于中低水平:)干杯,SVS请你告诉我你正在使用的代码,因为它在JSFIDLE中对我有效,所以我想知道是否有东西被调用了两次。是的,伙计,有东西被调用了两次,因为我发呆了;)。。删除我的click语句解决了这个问题。然而,我发现了另一个问题,尽管与我的问题或你的答案无关:当按下键时,FF显示数字的形式历史,与滚动输入值的位置不匹配。无论如何,非常感谢,我想我可以这样运送。非常感谢!听起来您需要在这些表单元素上禁用自动完成。不幸的是,基于谷歌的快速搜索,似乎没有一种符合标准的方法来做到这一点,但您可以将
autocomplete=“off”
添加到输入框中。