我一直试图获取粘贴输入的值,但它总是不返回任何内容:
$('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工作正常,但粘贴没有。
答案 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
});
更多信息: