invoervak met max. invoer
Mijn deelnemers krijgen een visitekaartje op de site en daar mogen ze een tekst van 2 regels op zetten. Nu heb ik dat in Dreamweaver geprobeerd met het invoervak van formulieren en dat ingesteld op "meerdere regels", 40 tekens breed en 1 regel. Er kunnen dan 2 regels onder elkaar getypt worden, maar in werkelijkheid kun je maar door blijven typen of zelfs de grootte veranderen door te slepen met de puntjes rechts onder.
Heb wel met 'strlen' het afkappen na het 80e karakter geregeld maar dat kan dan middel in een woord gebeuren.
Wie heeft een suggestie.
Dat geeft gebruikers de vrijheid om één regel tekst van 40 karakters in te voeren, of iets anders verdeeld over twee regels. Moet je wel afvragen hoe je dit opslaat, waarschijnlijk is het het makkelijkste om de tekst dan ook in twee kolommen onder te brengen. De maximum lengte wordt dan voornamelijk programmatisch geregeld.
Dan zul je wellicht nog wat randgevallen moeten afvangen waarin één karakter mogelijk is opgebouwd uit meerdere bytes. De functie strlen() telt het aantal BYTES, niet het aantal KARAKTERS.
<textarea name="myname" id="mytext" cols="50" rows="2" style="resize: none;"></textarea>
Stukje jQuery (voor het 40 regels per line) Let op dat je jQuery hebt.
<script type="text/javascript">
var maxLength = 40;
$('#mytext').on('input focus keydown keyup', function() {
var text = $(this).val();
var lines = text.split(/(\r\n|\n|\r)/gm);
for (var i = 0; i < lines.length; i++) {
if (lines.length > maxLength) {
lines = lines.substring(0, maxLength);
}
}
$(this).val(lines.join(''));
});
</script>
Dan zou ik nog een check in PHP maken bij het opslaan.
Chars kun je rustig tellen. Bovenstaande kun je oplossen door mb_strlen() te gebruiken.
In ieder geval bedankt voor beide oplossingen. De eerste had ik zelf ook aan gedacht maar staat zo knullig op een invoerformulier. De tweede oplossing ligt daarom het meest voor de hand.
Ga er mee aan de slag.
Nogmaals sorry,
Alexander