Estoy buscando una manera de desinfectar la entrada que pego en el navegador, ¿es esto posible con jQuery?
Me las he arreglado para llegar a esto hasta ahora:
$(this).live(pasteEventName, function(e) {
// this is where i would like to sanitize my input
return false;
}
Lamentablemente, mi desarrollo se ha detenido debido a este problema "menor". Realmente me haría una caravana feliz si alguien pudiera señalarme en la dirección correcta.
Respuestas:
OK, me encontré con el mismo problema ... Di la vuelta
Solo un pequeño tiempo de espera hasta que se pueda completar la función .val ().
MI.
fuente
De hecho, puede tomar el valor directamente del evento . Sin embargo, es un poco obtuso cómo llegar.
Devuelve falso si no quieres que pase.
fuente
e.clipboardData.getData('text')
en JavaScript.Para la compatibilidad multiplataforma, debe manejar eventos de entrada y cambio de propiedad:
fuente
Lo solucioné utilizando el siguiente código:
Ahora solo necesito almacenar la ubicación del cursor y agregarme a esa posición, entonces estoy listo ... creo :)
fuente
.find(':focus')
, y sabiendo que ese elemento determina la ubicación del cursor. Mira esto .input
marca la diferencia :) Normalmente tengo estos en mis eventos de cuadro de texto,keyup keydown paste input
pero obviamente depende de cuáles sean sus motivosHmm ... creo que puedes usar
e.clipboardData
para atrapar los datos que se están pegando. Si no funciona, eche un vistazo aquí .fuente
Escuche el evento de pegar y configure un escucha de evento de keyup. En keyup, captura el valor y elimina el detector de eventos keyup.
fuente
Funcionará bien
fuente
Esto se está acercando a lo que podrías desear.
Tenga en cuenta que cuando no se encuentra el objeto clipboardData (en navegadores que no sean IE) actualmente está obteniendo el valor completo del elemento + el valor del portapapeles.
Probablemente pueda hacer algunos pasos adicionales para diferenciar los dos valores, antes de una entrada y después de la entrada, si realmente solo busca los datos que realmente se pegaron en el elemento.
fuente
Esto funcionará para el evento de pegado del mouse.
fuente
¿Qué tal comparar el valor original del campo y el valor cambiado del campo y deducir la diferencia como el valor pegado? Esto captura el texto pegado correctamente incluso si hay texto existente en el campo.
http://jsfiddle.net/6b7sK/
fuente
Este código me funciona, ya sea pegar con el botón derecho o copiar directamente
Cuando pego
Section 1: Labour Cost
se convierte1
en cuadro de texto.Para permitir solo el valor flotante, uso este código
fuente
Más lejos:
fuente
Vea este ejemplo: http://www.p2e.dk/diverse/detectPaste.htm
Esencialmente rastrea cada cambio con el evento oninput y luego verifica si es una comparación pegar por cadena. Ah, y en IE hay un evento onpaste. Entonces:
fuente
Este método utiliza jqueries contenidos (). Unwrap ().
Después de un tiempo de espera determinado, escanee todos los contenidos que desempaquetan las etiquetas que no tienen la clase que configuró anteriormente. Nota: Este método no elimina las etiquetas de cierre automático como
Ver un ejemplo a continuación.
fuente
Esto resultó ser bastante ilusorio. El valor de la entrada no se actualiza antes de la ejecución del código dentro de la función de evento pegar. Intenté llamar a otros eventos desde la función de pegar eventos, pero el valor de entrada todavía no se actualiza con el texto pegado dentro de la función de cualquier evento. Eso es todos los eventos aparte de keyup. Si llama a keyup desde la función de evento de pegado, puede desinfectar el texto pegado desde dentro de la función de evento de keyup. al igual que...
Hay una advertencia aquí. En Firefox, si restablece el texto de entrada en cada tecla, si el texto es más largo que el área visible permitida por el ancho de entrada, al restablecer el valor en cada tecla se rompe la funcionalidad del navegador que desplaza automáticamente el texto a la posición de intercalación en el Fin del texto. En cambio, el texto se desplaza hacia atrás hasta el principio, dejando el cursor fuera de la vista.
fuente
Script para eliminar caracteres especiales de todos los campos con la clase portlet-form-input-field:
fuente
fuente