输入上的jQuery触发器keyup获取旧值

时间:2014-05-21 13:02:17

标签: javascript jquery

我尝试在qunit test中手动触发key-up事件,但由于手动触发key-up事件不会改变输入值,因此失败。

http://jsfiddle.net/Re9bj/4/

$('input').on('keyup', function (event) {
    $('div').html($('input').val());
});

var e = $.Event('keyup', {
    keycode: 68
});
$('input').trigger(e); //this trigger will not change the input value

此触发器可以使用,但问题是输入值永远不会改变。

1 个答案:

答案 0 :(得分:4)

您无法使用简单的触发器添加角色。触发器只会触发事件,但不会触发默认行为。你需要模拟它。

为此,您可以使用以下代码:

if(event.isTrigger && event.keycode) this.value +=  String.fromCharCode(event.keycode);

它将检查事件是否被触发,然后打印该值。

最终代码:

$('input').on('keyup', function (event) {
    if(event.isTrigger && event.keycode) this.value +=  String.fromCharCode(event.keycode);
    $('div').html($('input').val());
});

var e = $.Event('keyup', {
    keycode: 68
});
$('input').trigger(e);

小提琴:http://jsfiddle.net/Re9bj/9/