In Textarea Sonderzeichen unterbinden

  • Themenstarter Themenstarter Nutzer551
  • Beginndatum Beginndatum
N

Nutzer551

Hallo zusammen,

ich habe ein kleines Formular mit einer Textarea.

Wenn ein User diese Textarea verwendet und das € Zeichen verwendet, möchte ich dass das

1. entweder direkt in EURO umgewandelt wird oder

2. eine Fehlermeldung erscheint die sagt (aber auch das Formular unterbricht): € durch EURO ersetzen, dann fortfahren.

Ersteres wäre wünschenswert.

Ist so etwas umsetzbar?

Danke im voraus.

Habe es so versucht:

Code:
  if(objForm.BEMERKUNG.value == "€"){
    alert("Das € Zeichen bitte aus dem manuellen Textfeld löschen und durch EURO ersetzen!");
    objForm.BEMERKUNG.focus();
    return false;
  }

Allerdings führt er den "alert" nur aus wenn auch tatsächlich nur das € Zeichen in der Textarea steht.

Wenn ich aber schreibe: 10 €
gibt er die Fehlermeldung nicht aus...
 
hi,

erstmal danke. bin aber leider noch nicht sehr fit in solchen sachen :-(

habe es so versucht:

Code:
if(objForm.BEMERKUNG.indexOf("€")){
    alert("Das € Zeichen bitte aus dem manuellen Textfeld löschen und durch EURO ersetzen!");
    objForm.BEMERKUNG.focus();
    return false;
  }

t aber nicht wirklich.

Fehlermeldung: "Das Objekt unterstützt diese Eigenschaft oder Methode nicht".

Hier ein bisschen mehr:

Code:
<script type="text/javascript">
<!--
// Defaultwerte
var name= "";
var bemerkung= "";

function sendMail(objForm){  
var blnCheck = false;      


  if(objForm.NAME.value == ""){
    alert("Bitte Deinen Namen angeben!");
    objForm.NAME.focus();
    return false;
  }   

  if(objForm.BEMERKUNG.indexOf("€")){
    alert("Das € Zeichen bitte aus dem manuellen Textfeld löschen und durch EURO ersetzen!");
    objForm.BEMERKUNG.focus();
    return false;
  }
.
.
.
usw.
.
.
.
//-->
</script>

? mmmh
 
Hast du dir die indexof() doku überhaupt mal angeschaut?

Ermittelt das erste Vorkommen eines Zeichens oder einer Zeichenkette innerhalb einer Zeichenkette und gibt zurück, an wie vielter Stelle das Zeichen in der Zeichenkette steht. Die Zählung beginnt bei 0. Wenn die Suche erfolglos ist, wird -1 zurückgegeben.
Optional ist es möglich, die Funktion in einem zweiten Parameter anzuweisen, ab der wie vielten Stelle in der Zeichenkette sie mit der Suche beginnen soll.

Fehler 1:
Du wendest indexof auf die Textarea an und nicht auf den Inhalt der Textarea.

Fehler 2:
Du prüfst auf im Prinzip auf true/false. Der Rückgabewert von indexof ist aber -1 ( entspricht false) oder >=0 (entspricht true)


Hier ein Beispiel zur verdeutlichung:
Javascript:
<script type="text/javascript">
			
	function checkit(){
		if(testform.bemerkung.value.indexOf("€") != -1){
			alert("Das € Zeichen bitte aus dem manuellen Textfeld löschen und durch EURO ersetzen!");
			objForm.BEMERKUNG.focus();
			return false;
		}else{
			alert("Passt alles");
			return true;
		}

	}
			
<form name="testform" onsubmit="checkit();return false;">
	<textarea name="bemerkung"></textarea>
	<input type="submit" name="submit" value="submit">
</form>
 
Hi.

Du mußt schon auf den Text der Textarea zugreifen.

objForm.BEMERKUNG ist deine Textarea - und diese hat keine indexOf Methode.

objForm.BEMERKUNG.value ist der Text (also ein String) deiner Textarea - dieser besitzt eine indexOf Methode.


Warum willst du denn überhaupt das € Zeichen nicht im Text haben? Falls es irgendwo nicht richtig dargestellt wird, stimmt irgendetwas mit deiner Zeichenkodierung nicht. Dann wäre es aber besser das Problem zu beseitigen anstatt ein (halb ausgegorenes) Workaround zu implementieren.

Zeichen ersetzen kannst du übrigens mit der String.replace() Methode.

Gruß
 
@ rd4eva

Ne, hatte ich leider noch nicht. Bin bisher erst beim weltmeisterlichen googlen hängen geblieben. Arbeite mich ja in solchen Dingen gerade erst
ein... Die Verdeutlichung ist klar. Nach weiteren versuchen hat sich dann auch Dein niedergeschriebener Fehler 2 ergeben. Habe natürlich den
Rückgabewert -1 erhalten.

@ deepthroat

Auch ne nette Idee -> String.replace()


Tüfftel jetzt mal an beiden Methoden und entscheide mich dann später. Möchte mich aber für eure Hilfe bedanken.
Anliegen wurde bravorös gelöst...

Danke !


____________________________________________________________
Manchmal hilft ein Schlag auf den Hinterkopf, manchmal einer ins Gesicht :-)
 
Hallo,

schließe mich hier mal an :-)

Genau so etwas habe ich gesucht, hab aber ein zusätzliches Problem bekommen.
Bisher habe ich:

Code:
<script type="text/javascript">
function keinEuro(el)
{
  var val = el.value.replace(/€/g, "Euro");
  el.value = val;
}
</script>

<textarea name="Bemerkung"rows="4" cols="50" wrap="virtual" onkeyup="keinEuro(this)";>

Wenn ich beispielsweise jetzt was in meinem eingetragenen Text ändern möchte, kann ich mit den Pfeiltasten nicht zur gewollten Stelle fahren,
da er mich immer wieder zum Ende versetzt, klicke ich mit der Maus zu der Stelle die geändert werden soll, bleibt der Mauszeiger nur so lange stehen bis ich ein
Buchstaben, Zahl oder ein Zeichen gesetzt habe, dann fliege ich wieder zum Ende des Textes.

Ich hoffe es ist verständlich und es kann Jemand helfen...
 
Moin,

das Verhalten kommt daher, dass du jedes mal den Wert des Feldes neu setzt.
Lösung:
Prüfe vorher, ob überhaupt ein Eurozeichen im Feld steht, bevor du seinen Inhalt änderst.
 
Hallo Sven,

wenn ich Dich richtig verstehe meinst du es so:

Ich schreibe meine Text,
lass "wie auch immer" das eingegebene erstmal prüfen,
dann € Symbol ändern (natürlich automatisch)
und dann nochmal prüfen vor senden?

Wie soll ich das denn anstellen. Bin absolut kein Spezialist.
 
Mit dem Senden hab ich da nichts gemeint.

Ich meinte es nur so:
Code:
<script type="text/javascript">
function keinEuro(el)
{
  if(el.value.match(/€/g))//Prüfen, ob Eurozeichen vorhanden
  {
    var val = el.value.replace(/€/g, "Euro");
    el.value = val;
  }
}
</script>
 

Neue Beiträge

Zurück