Ich benutze jquery und habe einen Textbereich. Wenn ich über meine Schaltfläche abschicke, werde ich jeden durch Zeilenumbrüche getrennten Text benachrichtigen. Wie teile ich meinen Text, wenn es eine neue Zeile gibt?
var ks = $('#keywords').val().split("\n");
(function($){
$(document).ready(function(){
$('#data').submit(function(e){
e.preventDefault();
alert(ks[0]);
$.each(ks, function(k){
alert(k);
});
});
});
})(jQuery);
Beispieleingabe:
Hello
There
Ergebnis, das ich möchte, ist:
alert(Hello); and
alert(There)
Sie sollten Zeilenumbrüche unabhängig von der Plattform (Betriebssystem) analysieren. Diese Aufteilung ist universell mit regulären Ausdrücken. Sie können dies in Betracht ziehen:
Z.B
quelle
Es sollte sein
Sie übergeben eine Literalzeichenfolge an den Befehl split, keine Regex.
quelle
"\n"
und/\n/
sind zwei völlig verschiedene Dinge in JS."
= string,/
= regulärer Ausdruck."\n"
und/\n/
passen die gleichen Dinge?Da Sie verwenden
textarea
, finden Sie möglicherweise \ n oder \ r (oder \ r \ n) für Zeilenumbrüche. Daher wird Folgendes vorgeschlagen:$('#keywords').val().split(/\r|\n/)
ref: Überprüfen Sie, ob die Zeichenfolge einen Zeilenumbruch enthält
quelle
/\r?\n/
... Ich denke, die Verwendung von|
(oder) würde leere Ergebnisse für CRLF-Zeilenenden verschachteln.\r
) sehen . Der letzte Ort, an dem sie weit verbreitet waren, waren alte Mac OS-Versionen von vor fast 20 Jahren.Gerade
var ks = $('#keywords').val().split(/\r\n|\n|\r/);
wird perfekt funktionieren.
Stellen Sie sicher , dass es
\r\n
an der Spitze der RegExp- Zeichenfolge steht, da dies zuerst versucht wird.quelle
g
am Ende der Regex ist nicht notwendigDie einfachste und sicherste Möglichkeit, eine Zeichenfolge unabhängig vom Format (CRLF, LFCR oder LF) mit neuen Zeilen zu teilen, besteht darin , alle Wagenrücklaufzeichen zu entfernen und dann die neuen Zeilenzeichen zu teilen .
"text".replace(/\r/g, "").split(/\n/);
Dadurch wird sichergestellt , dass , wenn Sie kontinuierlich neue Zeilen (dh haben
\r\n\r\n
,\n\r\n\r
oder\n\n
) das Ergebnis wird immer das gleiche sein.In Ihrem Fall würde der Code folgendermaßen aussehen:
Hier einige Beispiele, die die Bedeutung dieser Methode verdeutlichen:
quelle
var ks = $('#keywords').val().split("\n");
Innere des Ereignishandlersalert(ks[k])
anstelle vonalert(k)
Demo
quelle
Good'ol Javascript:
quelle
Das Problem ist, dass beim Initialisieren
ks
dasvalue
nicht festgelegt wurde.Sie müssen den Wert abrufen, wenn der Benutzer das Formular sendet. Sie müssen also das
ks
Innere der Rückruffunktion initialisierenquelle
Hier ist ein Beispiel mit
console.log
anstelle vonalert()
. Es ist praktischer :)Sie können es hier versuchen
quelle
quelle