jquery - 在粘贴时,输入值不起作用

时间:2013-09-15 17:14:42

标签: javascript jquery

我一直试图获取粘贴输入的值,但它总是不返回任何内容:

$('form#post-game :input[name="header"]').keyup(function(){
    var str = $(this).val();
    IsImageValid(str, "#post-game-img-header");
});

$(document).on('paste','form#post-game :input[name="header"]',function(e) {
    var str = $('form#post-game :input[name="header"]').val();
    IsImageValid(str, "#post-game-img-header"); // there is a console log in this function
});

keyup工作正常,但粘贴没有。

2 个答案:

答案 0 :(得分:2)

使用自定义事件afterpaste,paste方法会立即触发一些内容,但有些时间会给出null值。

这种后贴片方法在粘贴方法0毫秒后触发,并且在每种情况下都能正常工作。

//Custom event After paste
$('HTML').on('paste', function (e) {
    e = $.extend({}, e, { type: 'afterpaste' });
    window.setTimeout(function () { $(e.target).trigger(e); }, 0);
});

//changed paste to afterpaste
$(document).on('afterpaste','form#post-game :input[name="header"]',function(e) {
    var str = $('form#post-game :input[name="header"]').val();
    IsImageValid(str, "#post-game-img-header"); // there is a console log in this function
});

答案 1 :(得分:0)

使用.on('input propertychange',代替.on('paste',

试试这个:

$(document).on('input propertychange','form#post-game input[name="header"]',function(e){ 
    var str = this.value;
    IsImageValid(str, "#post-game-img-header"); // there is a console log in this function
});

更多信息: