Estoy tratando de implementar una funcionalidad en la que si un usuario pega texto, debería eliminar < , > , $ y ! .
El siguiente código funciona en todas las entradas. Actualmente deshabilita la función de pegar.
function specialCharRestriction() { setTimeout(function(e) { $('input, textarea').bind("cut copy paste", function(e) { e.preventDefault(); }); $('input:not([type=password]), textarea').on('keypress', function(e) { var blockSpecialRegex = /[!$(){}[\]:;<+?\\>]/; var key = String.fromCharCode(!e.charCode ? e.which : e.charCode); if (blockSpecialRegex.test(key)) { e.preventDefault(); return false; } }); }, 500); }En cambio, quiero algo como esto:
$('input').val().replace(regex, '');De esta manera, se puede aplicar en todas las entradas y no tengo que seleccionar todas las entradas una por una. Hay más de 100 campos declarados en mi proyecto, así que ayúdeme con un código genérico que se puede aplicar en todos los campos de entrada.
Editar: quiero que cada vez que alguien pegue <Naruto> , solo se pegue Naruto y se omita <>. El siguiente código solo funciona una vez y luego se pegan los caracteres especiales.
$('input, textarea').bind("input", function(e) { var blockSpecialRegex = /[!$(){}[\]:;<+?\\>]/g; let txtOrig = $(this).val(); let txtFinal = txtOrig.replace(blockSpecialRegex, ''); if (txtOrig !== txtFinal) { // Some blocked special chars was found and removed // Warning: this will move the cursor to the end! $(this).val(txtFinal); } }) <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> input1:<input id="txt1"><br> input2:<input id="txt2"><br> input3:<input id="txt3"><br> textarea1:<textarea id="txt4"></textarea><br> textarea2:<textarea id="txt5"></textarea><br> textarea3:<textarea id="txt6"></textarea><br>