Renate: Zeilenumbrüche bei Char count in einer Textarea filtern

Guten Morgen,

ich habe mir aus dem Netz ein Script geladen um auf meiner Homepage die Eingabe in ein Formular zu begrenzen. Natürlich prüfe ich das auch noch mit PHP.
Leider wird mir durch die verschiedenen LineBreaks (\n, \r) in den unterschiedlichen Browsern eine unterschiedliche Anzahl Zeichen angezeigt.
Wie kann ich dies in dem folgenden Script berücksichtigen?

Danke für Hilfe

R.

  
(function($) {  
  
	$.fn.charCount = function(options){  
	  
		// default configuration properties  
		var defaults = {	  
			css: 'counter',  
			counterElement: 'div',  
			cssWarning: 'warning',  
			cssExceeded: 'exceeded',  
			counterText: 'Verfügbare Zeichen: '  
		};  
			  
		var options = $.extend(defaults, options);  
		  
		function calculate(obj){  
			var count = $(obj).val().length;  
			var available = options.allowed - count;  
			if(available <= options.warning && available >= 0){  
				$(obj).next().addClass(options.cssWarning);  
			} else {  
				$(obj).next().removeClass(options.cssWarning);  
			}  
			if(available < 0){  
				$(obj).next().addClass(options.cssExceeded);  
			} else {  
				$(obj).next().removeClass(options.cssExceeded);  
			}  
			$(obj).next().html(options.counterText + available);  
			};  
				  
		this.each(function() {  			  
			$(this).after('<'+ options.counterElement +' class="' + options.css + '">'+ options.counterText +'</'+ options.counterElement +'>');  
			calculate(this);  
			$(this).keyup(function(){calculate(this)});  
			$(this).change(function(){calculate(this)});  
		});  
	  
	};  
  
})(jQuery);  
  
  
$(document).ready(function(){  
		$("#nachricht").charCount({  
			allowed: 200,		  
			warning: 20  
		});	  
	});  

  1. @@Renate:

    nuqneH

    ich habe mir aus dem Netz ein Script geladen um auf meiner Homepage die Eingabe in ein Formular zu begrenzen.

    Wozu JavaScript? Was gefällt dir am maxlength-Attribut nicht?

    Qapla'

    --
    „Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)
    1. @@Renate:

      nuqneH

      ich habe mir aus dem Netz ein Script geladen um auf meiner Homepage die Eingabe in ein Formular zu begrenzen.

      Wozu JavaScript? Was gefällt dir am maxlength-Attribut nicht?

      Weil nicht alle Browser das unterstützen und ich den Nutzern die möglichen verbleibenden Zeichen anzeigen möchte. Daher bitte Hilfe zu meinem Anliegen und nicht meine Intension hinterfragen.

      Qapla'

      1. @@Renate:

        nuqneH

        Was gefällt dir am maxlength-Attribut nicht?

        Weil nicht alle Browser das unterstützen

        Oops, welche denn nicht?

        und ich den Nutzern die möglichen verbleibenden Zeichen anzeigen möchte. Daher bitte Hilfe zu meinem Anliegen und nicht meine Intension hinterfragen.

        Hier wird grundsätzlich alles hinterfragt. Und das ist auch gut so.

        Siehe Signatur.

        Hättest du gleich deine Intention genannt, dann wäre die Nachfrage nicht nötig gewesen.

        Oft beschreiben Fragende nicht ihr eigentliches Problem, sondern das, was sie als Lösung ihres Problems ansehen. Dabei sind sie auf dem Holzweg.

        Qapla'

        --
        „Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)
  2. Hallo,

    Leider wird mir durch die verschiedenen LineBreaks (\n, \r) in den unterschiedlichen Browsern eine unterschiedliche Anzahl Zeichen angezeigt.

    Eigentlich sollten Browser hier einheitlich \n verwenden (soweit ich weiß), aber du kannst es natürlich vereinheitlichen.

    var count = $(obj).val().length;

    var value = $(obj).val();  
    value = value.replace(/\r\n|\r|\n/g, '\n');  
    var count = value.length;
    

    Das nutzt einen Regulären Ausdruck, um die Ersetzung vorzunehmen. Findet alle \r\n, \r und \n und ersetzt sie einheitlich durch \n.

    http://de.selfhtml.org/javascript/objekte/regexp.htm
    http://de.selfhtml.org/javascript/objekte/string.htm#replace

    Mathias

    1. Hallo,

      Leider wird mir durch die verschiedenen LineBreaks (\n, \r) in den unterschiedlichen Browsern eine unterschiedliche Anzahl Zeichen angezeigt.

      Eigentlich sollten Browser hier einheitlich \n verwenden (soweit ich weiß), aber du kannst es natürlich vereinheitlichen.

      var count = $(obj).val().length;

      var value = $(obj).val();

      value = value.replace(/\r\n|\r|\n/g, '\n');
      var count = value.length;

      
      >   
      > Das nutzt einen Regulären Ausdruck, um die Ersetzung vorzunehmen. Findet alle \r\n, \r und \n und ersetzt sie einheitlich durch \n.  
      >   
      > <http://de.selfhtml.org/javascript/objekte/regexp.htm>  
      > <http://de.selfhtml.org/javascript/objekte/string.htm#replace>  
      >   
      > Mathias  
        
      Hallo Mathias,  
        
      vielen Dank für deine Antwort. Ich habe das eingebaut und getestet. Wenn ich einen Text mit 4 Zeilenumbrüchen eingebe beint beim Safari die Counteranzeige bei 4 stehen (bei 4 ist Schluss und keine Eingabe möglich). Firefox zeigt es richtig an (bei 0 ist Schluss und keine Eingabe möglich).  
        
      LG  
        
      R.