web-dev-qa-db-fra.com

jQuery: $ .trim () espaces entre les mots dans input.val ()

J'ai vu des questions similaires aux miennes ici, mais elles ne me répondent pas vraiment ...

Donc, je fais ceci: (dans la fonction de préparation de document)

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

L'idée est lorsque l'utilisateur se concentre sur une input appelée #dest supprime tous les espaces qu'elle contient (précédemment ajoutée à l'aide de focusout pour un confort visuel).

Pour l'instant, rien ne se passe. :(

J'espère que quelqu'un pourra m'aider un peu ici.

Merci!


Est-ce un problème informatique? J'ai testé tout le code fourni par les commentateurs et aucun ne fonctionne. J'utilise Firefox et Safari sous OSX (Snow Leopard) 10.6.8 et également Safari sous 10.8.2 (Lion) et j'ai eu les mêmes résultats ... Problème OSX? - Tout va bien, vérifiez ma dernière édition!


Final Edit et Solution grâce à Phil Klein

Mon problème n'utilisait pas correctement la fonction trim() de jQuery ... Selon la fonction trim()documentation elle effectue les opérations suivantes:

La fonction $ .trim () supprime toutes les nouvelles lignes, les espaces (y compris les espaces Non insécables) et les onglets du début et de la fin du fichier chaîne fournie. Si ces caractères d'espacement apparaissent au milieu de la ficelle, ils sont conservés.

Hier, je n'ai pas lu la dernière partie où il est écrit from the beginning and end of the supplied string - Désolé tout le monde. :(

Heureusement et après le dessin ci-dessus, @Phil Klein a compris mon erreur et m'a aidé à trouver une solution:

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

Vous pouvez en savoir plus sur la solution et voir un exemple ici .

Merci à Phil Klein et à tous ceux qui m'ont aidé dans ce projet;)

12
TCB13

L'exemple ci-dessous supprime tous les espaces du contenu de la zone de texte active. Cet exemple particulier nécessite jQuery 1.7+ car il utilise la nouvelle API .on():

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

Voir cet exemple: http://jsfiddle.net/RnZ5Y/5/

18
Phil Klein

Essayez ceci: $.trim($("#dest").val()); 
Corrigez-moi si je me trompe !!

4
Jigar Tank

essayez $("#dest").val().trim();, cela a fonctionné pour moi. 

2
Jack Sun

Si votre code ci-dessus est en cours d'exécution avant que la page ne soit complètement prête, il est fort probable que le #dest ne soit pas trouvé par jquery et que le code d'écoute de l'événement ne soit pas exécuté.

0
Roman

Cette fonction fonctionne bien pour votre scénario. Comme il ne faut qu'un espace entre les caractères et ne permet pas plus de 2 espaces 

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

J'ai créé ma propre fonction :) 

regarde ici s'il te plait :) 

function KillSpaces(phrase) {

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

vous pouvez facilement l'utiliser quand vous voulez!

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