合并两个输入事件

时间:2017-03-11 22:36:27

标签: javascript jquery

我的目标是从输入中删除javascript,所以我写了一些jquery

javascript:

    <input type="text" id = "IDthisinput'" class="CLthisinput'"  placeholder="First"
            onChange   = "dosomething();"
            onKeyPress = "this.onchange();"
            onpaste    = "this.onchange();"
            oninput    = "this.onchange();"
    />
    <span id="ReturnedMsg"></span>
    <span id="IDActionVal"></span>

jquery:

    $('.CLthisinput').on('keyup', function () {
            $('#ReturnedMsg').html(dotuff('#'+this.id,$(this).val()));
            $('#IDActionVal').html('#'+this.id + '  ' + 'keyup ' + $(this).val());
    });
    $('.CLthisinput').on('paste', function () {
            $('#ReturnedMsg').html(dotuff('#'+this.id,$(this).val()));
            $('#IDActionVal').html('#'+this.id + '  ' + 'keyup ' + $(this).val());
    });

当谈到缩短上述内容时,我很难过,这很好,就像这样:

    $('.CLthisinput').on('keyup', 'paste', function () {
            var theaction = event
            $('#ReturnedMsg').html(dotuff('#'+this.id,$(this).val()));
            $('#IDActionVal').html('#'+this.id + '  ' + theaction + '  ' + $(this).val());
    });

如何让活动一起工作?!

2 个答案:

答案 0 :(得分:2)

另一种方法也是外包该功能,如下:

var helper = function() {
  $('#ReturnedMsg').html(dotuff('#'+this.id,$(this).val()));
  $('#IDActionVal').html('#'+this.id + '  ' + 'keyup ' + $(this).val());
}
$('.CLthisinput').on('keyup', helper);
$('.thisinput').on('paste', helper);

答案 1 :(得分:0)

枚举同一个字符串中的两个事件,用空格分隔:

$('.thisinput').on('keyup paste', function () {
        var theaction = event
        $('#ReturnedMsg').html(dotuff('#'+this.id,$(this).val()));
        $('#IDActionVal').html('#'+this.id + '  ' + theaction + '  ' + $(this).val());
});

你不能将它们作为单独的参数传递,因为$('.thisinput').on('keyup', 'paste', ...)做了完全不同的事情:当keyup内的<paste>标记内发生.thisinput事件时,它会触发(和允许动态添加<paste>标记。

您可以使用event.type找出事件的类型:

$('.thisinput').on('keyup paste', function () {
        var theaction = event
        $('#ReturnedMsg').html(dotuff('#'+this.id,$(this).val()));
        $('#IDActionVal').html('#'+this.id + '  ' + theaction.type + '  ' + $(this).val());
});

此外,请勿使用全局event对象(也称为window.event)。这是Microsoft引入的non-standard extension,它在Firefox中不起作用。相反,将事件作为参数传递给回调:

$('.thisinput').on('keyup paste', function (event) {
        var theaction = event
        $('#ReturnedMsg').html(dotuff('#'+this.id,$(this).val()));
        $('#IDActionVal').html('#'+this.id + '  ' + theaction.type + '  ' + $(this).val());
});

此外,您实际上不需要theactionevent作为单独的变量:

$('.thisinput').on('keyup paste', function (theaction) {
        $('#ReturnedMsg').html(dotuff('#'+this.id,$(this).val()));
        $('#IDActionVal').html('#'+this.id + '  ' + theaction.type + '  ' + $(this).val());
});