我正在寻找一种方法来消毒输入,我粘贴到浏览器,这是可能的用jQuery做吗?

到目前为止,我已经想出了这个:

$(this).live(pasteEventName, function(e) {
 // this is where i would like to sanitize my input
 return false;
}

不幸的是,我的发展因为这个“小”问题而戛然而止。 如果有人能给我指出正确的方向,我真的会让我成为一个快乐的露营者。


当前回答

$("#textboxid").on('input propertychange', function () {
    //perform operation
        });

它会工作得很好。

其他回答

请看这个例子:http://www.p2e.dk/diverse/detectPaste.htm

它本质上用oninput事件跟踪每个更改,然后通过字符串比较检查它是否是粘贴。哦,在IE中有一个onpaste事件。所以:

$ (something).bind ("input paste", function (e) {
    // check for paste as in example above and
    // do something
})

嗯…我认为你可以使用e.clipboardData来捕捉被粘贴的数据。如果不成功,看看这里。

$(this).live("paste", function(e) {
    alert(e.clipboardData); // [object Clipboard]
});

这段代码为我工作,要么从右击粘贴或直接复制粘贴

   $('.textbox').on('paste input propertychange', function (e) {
        $(this).val( $(this).val().replace(/[^0-9.]/g, '') );
    })

当我粘贴第1节:劳动力成本时,它在文本框中变成1。

为了只允许浮动值,我使用这段代码

 //only decimal
    $('.textbox').keypress(function(e) {
        if(e.which == 46 && $(this).val().indexOf('.') != -1) {
            e.preventDefault();
        } 
       if (e.which == 8 || e.which == 46) {
            return true;
       } else if ( e.which < 48 || e.which > 57) {
            e.preventDefault();
      }
    });

实际上,您可以直接从事件中获取值。不过如何到达它有点迟钝。

如果你不想让它通过,则返回false。

$(this).on('paste', function(e) {

  var pasteData = e.originalEvent.clipboardData.getData('text')

});
 $('').bind('input propertychange', function() {....});                      

这将为鼠标粘贴事件工作。