2017-11-01 4 views
0

Mein Benutzer möchte ein Eingabefeld, wo er eine Nachricht eingeben kann, die ich dann als Laufschrift über die Seite angezeigt werden. Er will in der Lage sein, leere Räume zu schließen, zum BeispielLeerzeichen von Eingabe einschließen

„Mitarbeiter               bitte nachschlagen.“

Mein Textfeld, wenn ich den Text bekomme, bemerkt nicht den Platz. Irgendeine Möglichkeit, das zu bekommen?

Ich weiß, das ist eine seltsame Anfrage - google sagt mir nur, wie man Leerzeichen entfernt, nicht enthalten.

var text = $('textarea').val();
<textarea class='messageInput'></textarea>

+0

Das Markup des Ausgangs (= der "Marquee") auch nützlich sein würde. Ist es ein anderes Textfeld, ein Div-Element, ...? Denn darauf kommt es an, ob eine reine CSS-Lösung möglich ist oder JS benötigt wird. – Connum

Antwort

1

Ich bin mir ziemlich sicher, dass Sie den Wert mit allen Leerzeichen erhalten, das Problem liegt in der Anzeige des Wertes in Ihrem (wahrscheinlich) benutzerdefinierten div. Der beste Weg wäre, white-space: pre auf diesem Element zu setzen, das (wie die Option vorschlägt) pre Weißraum dienen wird. ;) Beispiel:

<div id="foo" style="white-space: pre"><!-- insert text here --></div> 

Und ignorieren alle &nbps; Vorschläge, die im Wesentlichen den Textinhalt modifizieren. CSS ist der richtige Weg!

+0

Auch ein guter Vorschlag und wohl der am wenigsten invasive. +1 – msanford

+0

Danke! Funktioniert perfekt. – user2430018

0

Sie müssen Leerzeichen in geschützten Leerzeichen konvertieren, &nbsp;, die unter Verwendung von String.prototype.replace() mit einem regulären Ausdruck durchgeführt werden kann:

$('#text').html($('textarea').val().replace(/ /g, '&nbsp'));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<textarea class='messageInput'>employees  hello</textarea> 
 
<p id="text"></p>

Sie benötigen / /g, damit alle Leerzeichen übereinstimmen, nicht nur das erste, was .replace(' '...) tun würde.

Beachten Sie, dass Smajls Vorschlag ist weniger invasiv und wahrscheinlich besser, aber ich werde dies für die Nachwelt verlassen.

0

Die Leerzeichen im Wert werden nicht ignoriert. Es ist, dass der Browser doppelte Räume standardmäßig "komprimiert". Verwenden white-space:pre;

<input type="text" id="input"> 
<button id="button"> 
    TEST 
</button> 
<div id="result"></div> 

document.getElementById("button").onclick = function() { 
 
    var content = document.getElementById("input").value; 
 
    console.log(content); 
 
    document.getElementById("result").innerHTML = content; 
 
}
#result { 
 
    white-space:pre; 
 
}
<input type="text" id="input"> 
 
<button id="button"> 
 
    TEST 
 
</button> 
 
<div id="result"></div>

EDIT: zu spät;)

Verwandte Themen