Это приближается к тому, что вы могли бы хотеть.
function sanitize(s) {
return s.replace(/\bfoo\b/g, "~");
};
$(function() {
$(":text, textarea").bind("input paste", function(e) {
try {
clipboardData.setData("text",
sanitize(clipboardData.getData("text"))
);
} catch (e) {
$(this).val( sanitize( $(this).val() ) );
}
});
});
Обратите внимание, что когда объект clipboardData не найден (в браузерах, отличных от IE), в настоящее время вы получаете полное значение элемента + значение буфера обмена.
Вероятно, вы можете сделать несколько дополнительных шагов, чтобы различать два значения, до ввода и после ввода, если вы действительно только после того, какие данные действительно были вставлены в элемент.