2011-12-20 17 views
13

he visto algunas preguntas similares a los míos aquí, pero que en realidad no me contesta ...

Así que estoy haciendo esto: (Dentro de la función lista de documentos)

$("#dest").focusin(function() { 
    $("#dest").val($.trim($("#dest").val())); 
}); 

la IDEA es cuando el foco del usuario en un input llama #dest recortar todos los caracteres de espacio en él (previamente añadido usando focusOut para el confort visual).

En este momento, nada está sucediendo. :(

espero que alguien me puede ayudar un poco aquí.

Gracias!


¿Es esta una computadora problema relacionado? He probado todo el código proporcionado por los comentaristas y ninguno funciona. Estoy usando Firefox y Safari en OSX (Snow Leopard) 10.6.8 y también Safari en 10.8.2 (Lion) y obtuve los mismos resultados ... ¿Problema OSX? - Todo está bien, mira mi último ¡edítalo!


edición final y la solución gracias a Phil Klein

Mi problema estaba usando incorrectamente la función de jQuery trim() ... De acuerdo con la trim()documentation hace lo siguiente:

El $. La función trim() elimina todas las líneas nuevas, los espacios (incluidos los espacios sin interrupción ) y las pestañas del principio y del final de la cadena suministrada . Si estos caracteres en blanco aparecen en el medio de la cadena, se conservan.

Ayer no leí la última parte donde dice from the beginning and end of the supplied string - Disculpe a todos. :(

Lucky y después de que el dibujo de arriba, @Phil Klein entiende mi error y me ayudó con una solución:.

$(function() { 
    $("#dest").on("focus", function() { 
     var dest = $(this); 
     dest.val(dest.val().split(" ").join("")); 
    }); 
}); 

Puede read more about the solution and see an example here

Gracias a @Phil Klein y también a todos los que me ayudó en esto;)

+1

Tal confort visual se puede lograr utilizando otros medios – Thilo

+0

Su función es toda la razón, sólo es necesario para envolver con $ (function() {...} código ... –

+0

@Thilo - CSS rellenando cada 3 números? – TCB13

Respuesta

15

El siguiente ejemplo elimina todos los espacios del contenido del cuadro de texto en el foco. Este ejemplo particular requiere jQuery 1.7+ ya que utiliza la nueva API .on():

$(function() { 
    $("#dest").on("focus", function() { 
     var dest = $(this); 
     dest.val(dest.val().split(" ").join("")); 
    }); 
}); 

ver este ejemplo: http://jsfiddle.net/RnZ5Y/5/

+1

Es posible que desee incluir el código en su respuesta, jsfiddle no siempre es accesible. –

+0

Tu ejemplo no funciona, probado bajo Firefox y Safari. Gracias de cualquier manera. – TCB13

+0

¿Qué no está funcionando? He probado con los mismos navegadores. –

4

Pruebe estos: $.trim($("#dest").val());
corregirme si estoy equivocado !!

+0

.val() debería estar bien para un campo de texto. – Thilo

+0

tienes uno más ')' de lo necesario al final, pero '$ .trim ($ (" # d est "). val());' todavía no funciona ... gracias – TCB13

+0

@ TCB13 el corchete al final es para $ .trim –

0

Si eres el código de seguridad se ejecuta antes de que la página no está completamente listo, entonces es muy probable que el #dest ISN no encontrado por jquery y el código para escuchar el evento no se ejecuta.

+0

El código estaba en una función 'document ready', disculpa por no decir eso al principio. De todos modos, me volví loco y traté de colocar el código dentro de esto: '$ (ventana) .bind (" carga ", función() {' y todavía no funciona. Gracias. – TCB13

0

Esta función funciona bien para su caso. Ya que está tomando sólo un espacio entre caracteres y no permitir más de 2 espacio

$(function() { 
$("#dest").on("focusout", function() { 
    var dest = $(this); 
    dest.val(jQuery.trim(dest.val()));   
    dest.val(dest.val().replace(/[ ]{2,}/, ' ')); 
}); 
}); 
+0

Este caso ha sido cerrado hace mucho tiempo. Y admití antes del error cuando extrañaba leer los documentos. – TCB13

2

tratar $("#dest").val().trim();, que trabajó para mí. (? Acolchado CSS)

Cuestiones relacionadas