JSFiddle - React, Tailwind, and code Playground
HTML
<input class="someInput" value="abcde"/>
JavaScript
$('.someInput').each(function(){
this.lastVal = $(this).val(); // initially set last value
});
const validate = (pastedText) => pastedText.startsWith('a') ;
const findPastedText = (input) => {
if(!input.lastVal)
return;
let val = $(input).val();
if(val.length < input.lastVal.length && input.lastVal.startsWith(val)) //something has been deleted
return;
let pastedText = '';
for(let iVal = 0, iLast = 0; iVal < val.length; iVal++){
if(iLast > input.lastVal.length - 1){
pastedText += val.charAt(iVal);
continue;
}
if(val.charAt(iVal) == input.lastVal.charAt(iLast) ){
iLast++;
continue;
}
pastedText += val.charAt(iVal);
}
return pastedText;
};
$('.someInput').on('input', function() {
let pastedText = findPastedText(this);
console.log(pastedText);
if(!!pastedText && pastedText != '' && !validate(pastedText)){
$(this).val(this.lastVal);
}else{
this.lastVal = $(this).val();
}
});