Anzahl Zeichen/sms mithilfe von jQuery
Zähle ich Zeichen mit NobleCount und den folgenden code:
$('#message').NobleCount('#messageInfo',{
max_chars: getMaxChars(),
on_negative: function(t_obj, char_area, c_settings, char_rem){
}
});
Möchte ich eine Funktion wie das zählen SMS, wenn das limit erreicht ist, werden die nächsten 160 Zeichen sind für die zweite sms und so weiter. Ich kann Parameter verwenden, wie on_update, on_positive, on_negative und block_negative.
Habe ich versucht, etwas mit modulo, aber es funktioniert nicht. Irgendwelche Ideen?
- Wollen Sie eine Lösung, mit diesem plugin, oder eine allgemeinere jQuery-Lösung? Dies ist gar nicht schwierig, auf seine eigene, sondern die Arbeit in ein unbekanntes plugin könnte härter sein!
- Ich fand gerade dieses plugin für die Zählung der chars, aber ich brauche auch zum zählen der sms, also ich freue mich über jede Lösung
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erstens, Zeichen zählen ist sehr einfach. Sie brauchen nur zu verwenden die
length
- Eigenschaft auf eine Zeichenfolge. Die Anzahl der SMS-Nachrichten benötigt, müssen Sie dividieren durch 160 und round up (weil 161 Zeichen benötigt 2 Nachrichten). Ihr code sollte wahrscheinlich so Aussehen:HTML:
jQuery:
Siehe jsFiddle Beispiel.
if (chars == 0) { remaining = 160; messages = 1; }
Beachten Sie, dass SMS ist komplizierter, als Sie scheinen, zu zeigen.
Standard "160 Zeichen" SMS nutzt einen seltsam 7-bit-Codierung, dass deckt die meisten ASCII -, einige Europäische Akzente, misc Symbole wie €, einige Hauptstadt griechischen Buchstaben (diejenigen, die nicht so Aussehen wie lateinische Buchstaben).
Wenn Ihr Nachricht verwendet andere Zeichen, kann es stattdessen sein, die in Unicode codiert mit UCS-2 (wie UTF-16, sondern nur BMP), für eine Begrenzung von 70 Zeichen. Eigentlich ist die Spezifikation sagt UCS-2, aber emoji (non-BMP Unicode) gesendet werden können, in SMS, so dass bedeutet, UTF-16 ist verwendet wird, in welchem Fall jedes emoji müssen, "verbrauchen bis" 2 Charaktere aus den insgesamt 70.
Aber einige Sprachen verwenden können "national language shift Tabellen", die eine alternative 7-bit-Codierung. Vor allem Türkisch, aber auch Spanisch, Portugiesisch und zehn indischen sub-Kontinent Sprachen. Diese sind relativ neue Ergänzungen zu den standard.
Sogar in der 7-bit-Codierung, ein paar Zeichen "escaped" werden, das heißt, Sie "verbrauchen bis" 2 Zeichen. In der Standard-7-bit-Codierung, diese sind:
{}[]\|^~€
.Wenn Ihre Nachricht geht über die 160 Zeichen, die er nutzen kann, "concatenated SMS", dann aber einen kleinen header wird Hinzugefügt, um jede Nachricht, d.h. jedes segment hat nur Raum für so etwas wie 153 Zeichen. Es gibt zwei verschiedene Versionen, die header, in verschiedenen Größen, somit kann es nicht sein 153 Zeichen, aber 152 (aus dem Gedächtnis). Ebenso für Unicode-verkettete SMS, der kleine Kopf macht es 67 Zeichen pro segment.
Glück mit allem!
function getSmsLength(v) { return v.replace(/([{}\[\]\\|\^~€])/g, "\\$1").replace(/\n/g, "--").length }
Hier kleines plugin für Sie. Es ist mein erstes jQuery-plugin, ich gebe es kostenlos 😉
Sie müssen nur starten Sie es mit:
HTML:
Javascript (Stand: 18.8.2014):
DEMO: http://jsfiddle.net/t32h0gj4/1/
HINWEIS: es gibt einige grundlegende Optionen
£
zählt als 92 Zeichen. Es scheint auch noch andere Fehler im script. Gute Basis, auf der aufgebaut jedoch.Sobald die Nachricht decodiert hat, wie Craig McQueen sagte in einem diesem thread post und Sie haben Ihre tatsächliche Anzahl der Zeichen, um die Anzahl der benötigten SMS-Betrag, den der folgende ist genug:
...Ich mag one-row-Lösungen so viel.
Ich denke, das folgende Skript kann mehr produzieren genaue Berechnung der SMS-Teile:
Beispiel verwenden:
Jedes Zeichen aus der erweiterungstabelle (GSM Extended Alphabet) ist dargestellt durch zwei Zeichen, die die tatsächliche maximale Länge ist dynamisch wie folgt berechnet: 160 - k, wobei k die Anzahl der erweiterte Zeichen in der Nachricht verwendet.
Müssen Sie auch berücksichtigen, die Länge der Nachricht ist 153 Zeichen bei der Verkettung von Nachrichten mit 8-bit-Referenz-Nummer.
Unicode-Länge beträgt 70 Zeichen, während verkettet 63 Zeichen.
Basierend auf den Problemen hier, die ich versuche zu schreiben die bessere Lösung. Verabschiedet aus mehreren beste Antwort hier.
Javascript
HTML
Können Sie den code hier http://www.mindrestingplace.com/2012/07/18/sms-character-counter/
Hoffe, dass dies Ihre Probleme lösen wird.
Dank
Ich das Skript aktualisiert (für meine Zwecke), um das Thema in der Anzahl als auch. Dies ist, was ich kam mit:
});
Ich getestet und es funktioniert. Ich auch ändern, den html-Code bit:
Dies ist zu spät, um das Spiel, aber hier ist, was ich bin derzeit dabei, zusammen.
Den Charakter limit wird festgelegt, 459, zu ermöglichen, verketteten Mitteilungen (wie durch meine service-provider), mit einem text Einheit tot-up pro 160 Zeichen verwendet. Bär in Verstand dieser Aspekt ist unvollständig, da jede Einheit nach der ersten würde man aus weniger als die 160-Zeichen-Vorlage durch message-Header und so weiter. Ich habe gerade nicht bekommen die genaue Aufteilung vom Anbieter noch.
Den entscheidenden Unterschied in diesem Skript ist, dass die Anzahl der Zeichen ist empfindlich auf nicht-standard-GSM-Zeichen, deren ascii-Werte in den array enthalten. Wo ein nicht-standard-Zeichen eingegeben wird, wird der Zähler ist 2, sonst 1.
Für das versenden von SMS Zeichen zählen
Logik /Anforderung :
Use-case :
Und so weiter...
Skript :