it-swarm-pt.tech

jQuery: espaços $ .trim () entre palavras em input.val ()

Eu vi algumas perguntas semelhantes às minhas aqui, mas elas realmente não me respondem ...

Então, estou fazendo isso: (dentro da função de prontidão do documento)

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

A ideia é quando o usuário se concentra em um input chamado #dest para aparar todos os caracteres de espaço nele (adicionado anteriormente usando o focusout para maior conforto visual).

Agora, nada está acontecendo. :(

Espero que alguém possa me ajudar um pouco aqui.

Obrigado!


Isso é um problema relacionado ao computador? Eu testei todo o código fornecido por comentadores e nenhum trabalho. Eu estou usando o Firefox e Safari em OSX (Snow Leopard) 10.6.8 e também o Safari em 10.8.2 (Lion) e eu tenho os mesmos resultados ... problema OSX? - Tudo está bem, confira a minha última edição!


Final Edit e Solution graças a Phil Klein

Meu problema estava usando incorretamente a função trim() do jQuery ... De acordo com a trim()documentation ele faz o seguinte:

A função $ .trim () remove todas as novas linhas, espaços (incluindo Espaços não separáveis) e as guias do início e fim da cadeia fornecida . Se esses caracteres de espaço em branco ocorrerem no meio de A string, eles serão preservados.

Ontem eu não li a última parte onde diz from the beginning and end of the supplied string - Desculpe a todos. :(

Com sorte e depois do desenho acima, @Phil Klein entendeu meu erro e me ajudou com uma solução:

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

Você pode ler mais sobre a solução e ver um exemplo aqui .

Obrigado ao @Phil Klein e também a todos que me ajudaram nessa;)

12
TCB13

O exemplo abaixo remove todos os espaços do conteúdo da caixa de texto em foco. Este exemplo específico requer o jQuery 1.7+, já que ele usa a nova API .on():

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

Veja este exemplo: http://jsfiddle.net/RnZ5Y/5/

18
Phil Klein

Tente estes: $.trim($("#dest").val()); 
Corrija-me se eu estiver enganado !!

4
Jigar Tank

tente $("#dest").val().trim();, funcionou para mim. 

2
Jack Sun

Se o código acima está em execução antes de a página não estar totalmente pronta, é muito provável que o #dest não seja encontrado pelo jquery e o código para escutar o evento não seja executado.

0
Roman

Esta função está funcionando bem para o seu cenário. Como está tirando apenas um espaço entre os caracteres e não permite mais de 2 espaços 

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

Eu fiz minha própria função :) 

olhe aqui por favor :) 

function KillSpaces(phrase) {

            var totalPhrase = "";
            for (i = 0; i < phrase.length; i++)
            {
                if (phrase[i] != " ")
                {
                    totalPhrase += phrase[i];
                }
            }
            return totalPhrase;
        }

você pode facilmente usá-lo sempre que quiser!

$(document).ready(function(){
var test="for testing purposes only";
alert(killSpaces(test));
});
0
Shiva Brahma