it-swarm.com.de

jQuery: $ .trim () Leerzeichen zwischen Wörtern in input.val ()

Ich habe hier einige ähnliche Fragen zu meinen gestellt, aber sie antworten mir nicht wirklich ...

Also mache ich folgendes: (Innerhalb der Dokumentbereitschaftsfunktion)

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

Die Idee ist, wenn sich der Benutzer auf eine input mit dem Namen #dest konzentriert, die alle Leerzeichen auf ihr trimmt (zuvor mit focusout für visuellen Komfort hinzugefügt).

Im Moment passiert nichts. :(

Hoffe, jemand kann mir hier ein bisschen helfen.

Vielen Dank!


Ist das ein Computerproblem? Ich habe den gesamten Code der Kommentatoren getestet und funktioniert nicht. Ich benutze Firefox und Safari unter OSX (Snow Leopard) 10.6.8 und auch Safari unter 10.8.2 (Lion) und habe die gleichen Ergebnisse erzielt ... OSX-Problem? - Alles in Ordnung, überprüfe meine letzte Bearbeitung!


Final Edit und Lösung dank Phil Klein

Mein Problem war die falsche Verwendung der Funktion trim() von jQuery. Laut trim()documentation wird Folgendes ausgeführt:

Die $ .trim () - Funktion entfernt alle Zeilenumbrüche, Leerzeichen (einschließlich der geschützten Leerzeichen) und Registerkarten vom Anfang und Ende des gelieferter String. Wenn diese Whitespace-Zeichen in der Mitte von .__ auftreten. die Schnur bleiben sie erhalten.

Gestern habe ich nicht den letzten Teil gelesen, in dem from the beginning and end of the supplied string heißt - Sorry alle. :(

Glücklich und nach der Zeichnung oben hat @Phil Klein meinen Fehler verstanden und mir bei einer Lösung geholfen:

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

Sie können mehr über die Lösung lesen und hier ein Beispiel sehen .

Danke an @Phil Klein und auch an alle, die mir dabei geholfen haben;)

12
TCB13

Im folgenden Beispiel werden alle Leerzeichen aus dem Inhalt des Textfelds entfernt. Dieses spezielle Beispiel erfordert jQuery 1.7+, da es die neue .on()-API verwendet:

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

Sehen Sie sich dieses Beispiel an: http://jsfiddle.net/RnZ5Y/5/

18
Phil Klein

Probieren Sie diese aus: $.trim($("#dest").val()); 
korrigiere mich wenn ich falsch liege !!

4
Jigar Tank

versuche $("#dest").val().trim();, es hat bei mir funktioniert. 

2
Jack Sun

Wenn der obige Code ausgeführt wird, bevor die Seite nicht vollständig bereit ist, ist es sehr wahrscheinlich, dass #dest von jquery nicht gefunden wird und der Code zum Abhören des Ereignisses nicht ausgeführt wird.

0
Roman

Diese Funktion funktioniert gut für Ihr Szenario. Da es nur ein Leerzeichen zwischen Zeichen benötigt und nicht mehr als 2 Leerzeichen erlaubt 

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

Ich habe meine eigene Funktion gemacht :) 

schau hier bitte :) 

function KillSpaces(phrase) {

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

sie können es leicht verwenden, wann immer Sie möchten!

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