Vue : Grenz-Zeichen im text-Bereich Eingang, truncate-filter?
<textarea name="" id="" cols="30" rows="10" v-model="$store.state.user.giftMessage | truncate 150"></textarea>
Ich habe versucht, erstellen Sie einen benutzerdefinierten filter :
filters: {
truncate(text, stop, clamp) {
return text.slice(0, stop) + (stop < text.length ? clamp || '...' : '')
}
}
aber das hat nicht brach den bauen, wenn ich es auf das v-Modell für den input...
Irgendwelche Ratschläge?
InformationsquelleAutor J W | 2017-09-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich verbessert auf @J Ws beantworten. Der resultierende code nicht haben, um zu definieren, wie Sie reagieren auf die Tastenbefehle, die ist, warum es verwendet werden kann, die mit einem beliebigen Zeichen im Gegensatz zu den akzeptierten Antworten. Es kümmert sich nur um den string-length das Ergebnis ist. Es kann auch behandeln Copy-Paste-Aktionen und schneidet überlange Pasten, Größe:
Die Magie liegt in der @keydown-Ereignis und das @einfügen-Ereignisse, die eine Aktualisierung erzwingen. Da der Wert bereits geschnitten, um die Größe richtig, es sichert, dass die internalValue ist entsprechend zu handeln.
Wenn Sie wollen auch zum Schutz der Wert aus deaktiviert Skript-änderungen, können Sie die folgenden watcher:
Ich habe gerade ein problem mit dieser einfachen Lösung: Wenn Sie setzen Sie den cursor irgendwo in der Mitte und geben Sie, überschreiten die maximale, das Letzte Zeichen entfernt wird und der cursor ans Ende des Textes. Es ist also noch etwas Raum für Verbesserung...
InformationsquelleAutor Nils-o-mat
Meine benutzerdefinierte Richtlinie version. Einfach zu bedienen.
InformationsquelleAutor user1386890
Ich Ihren code benutzt, und dann brach er aus in eine .Vue-Komponente, vielen Dank!
<template>
<textarea v-model="internalValue" @keydown="onKeyDown"></textarea>
</template>
`
InformationsquelleAutor J W
Beste Weg ist, um beobachten zu string-Länge und legen Sie den alten Wert, wenn die Zeichenkette länger, als Sie wollen:
InformationsquelleAutor Даниил Пронин
Während ich Stimme mit der ausgewählten Antwort. Sie können auch leicht verhindern, dass die Länge mit einem keydown-Ereignisprozedur.
Vue Vorlage
JavaScript
Tun auf diese Weise, Sie können auch reguläre Ausdrücke zu Fall verhindern, dass die Art der Schlüssel akzeptiert. Zum Beispiel, wenn Sie nur wollte, annehmen numerischen Werten können Sie das folgende tun.
InformationsquelleAutor J. Rambo