tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
NEIN
ANTWORTEN
15
ZUGRIFFE
1481
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Nutzer551 Tutorials.de Gastzugang
    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 :
    1
    2
    3
    4
    5
    
      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...
     

  2. #2
    Avatar von rd4eva
    rd4eva rd4eva ist offline Mitglied Brillant
    Registriert seit
    Feb 2003
    Beiträge
    756
    Mit objForm.BEMERKUNG.value == "€" prüfst du ja auch ob der gesamte Inhalt dem String "€" entspricht.

    Verwende entweder indexof() oder search().
     
    In order to understand recursion, one must first understand recursion.

  3. #3
    Nutzer551 Tutorials.de Gastzugang
    hi,

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

    habe es so versucht:

    Code :
    1
    2
    3
    4
    5
    
    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 :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    
    <script type="text/javascript">
    <!--
    // Defaultwerte
    var name= "";
    [b]var bemerkung= "";[/b]
     
    function sendMail(objForm){  
    var blnCheck = false;      
     
     
      if(objForm.NAME.value == ""){
        alert("Bitte Deinen Namen angeben!");
        objForm.NAME.focus();
        return false;
      }   
     
    [b]  if(objForm.BEMERKUNG.indexOf("€")){
        alert("Das € Zeichen bitte aus dem manuellen Textfeld löschen und durch EURO ersetzen!");
        objForm.BEMERKUNG.focus();
        return false;
      }[/b]
    .
    .
    .
    usw.
    .
    .
    .
    //-->
    </script>

    ? mmmh
     

  4. #4
    Avatar von rd4eva
    rd4eva rd4eva ist offline Mitglied Brillant
    Registriert seit
    Feb 2003
    Beiträge
    756
    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:
    Code javascript:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    
    <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>
     
    In order to understand recursion, one must first understand recursion.

  5. #5
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    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ß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  6. #6
    Nutzer551 Tutorials.de Gastzugang
    @ 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
     

  7. #7
    Dynamite D Tutorials.de Gastzugang
    Hallo,

    schließe mich hier mal an

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

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    <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...
     

  8. #8
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    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.
     

  9. #9
    Dynamite D Tutorials.de Gastzugang
    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.
     

  10. #10
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Mit dem Senden hab ich da nichts gemeint.

    Ich meinte es nur so:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    <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>
     

  11. #11
    Dynamite D Tutorials.de Gastzugang
    Ich danke Dir.

    "match" ... mit ein bisschen lesen und dem Einsatz logischen Denkvermögens hätte es wahrscheinlich
    auch ohne Hilfe klappen können. In diesem Fall stellt man sich nur die Frage: WANN ?

    Genau was ich gesucht habe. Einmalig

    Besten Dank
     

  12. #12
    Porkyy Tutorials.de Gastzugang
    hi,

    hab das ganze mal ausprobiert, allerdings habe ich es für "nurbuchstaben" umgeschrieben,
    also (/[^a-z A-Z ä Ä ö Ö ü Ü ß é É á Á ú Ú ó Ó í Í ý Ý,]/),

    dabei ist mir aufgefallen das wenn ich beispielsweise eine zahl eintrage und taste gedrückt halte, schreibt
    er trotzdem die zahlen. wenn ich dann aber mit buchstaben weiter fortfahre, wird mit jedem buchstaben
    eine der zahlen gelöscht.

    kann man das verhindern? also das tatsächlich keine zahlen möglich sind?
    mfg

    wenn ich das ganze aber auf "nurzahlen" umstelle und zwar so: (/[^\.^,\d]/g) dann klappt es. feld akzeptiert keine buchstaben.

    Bor wir panne bin ich denn

    Hatte wohl Tomaten auf den Augen.

    (/[^a-z A-Z ä Ä ö Ö ü Ü ß é É á Á ú Ú ó Ó í Í ý Ý,]/g, '')

    Alles klar
     

  13. #13
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Es gibt da übrigens noch einen etwas anderen Weg.

    Momentan wird ja das unerlaubte Zeichen im Nachhinein wieder entfernt.
    Das hat den Nachteil, dass im Falle, dass etwas entfernt wurde, der Cursor evtl. an einer anderen Position steht.

    Man kann aber auch, bevor es im Feld eingegeben wird, den KeyCode des Events überprüfen, und wenn er nicht passt, den Event canceln.

    Hier nen kleines Beispiel dazu:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; 
                                    charset=ISO-8859-1"   />
    <meta name="author"             content="doktormolle" />
    <meta name="date"               content="2010-04-07" />
    <title>Test</title>
    <script type="text/javascript">
    <!--
    function fx(e,p)
    {
      var key=(e.charCode)
                         ?e.charCode//Gecko
                          :e.keyCode;//andere
     
      return(p.test(String.fromCharCode(key)));
    }
    //-->
    </script>
     
    </head>
    <body>
    <input onkeypress="return fx(event,/[\d]/)">nur Zahlen<br/>
    <input onkeypress="return fx(event,/[^\d]/)">keine Zahlen<br/>
    <input onkeypress="return fx(event,/[a-z]/i)">nur Buchstaben A-Z<br/>
    </body>
    </html>
     

  14. #14
    Porkyy Tutorials.de Gastzugang
    Methode ist mir nicht bekannt, gefällt riesig, aber
    wie kann ich dort replace für das € Symbol anwenden?

    hab bisher erfolglos probiert...
     

  15. #15
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Dazu müsste man das TextRange-Objekt bemühen(da EURO mehr als 1 Zeichen beinhaltet), hab mal ein Beispiel dazu fertiggemacht.
     

Ähnliche Themen

  1. on select copy to textarea (markiertes in Textarea kopieren!
    Von Thomas Lindner im Forum Javascript & Ajax
    Antworten: 1
    Letzter Beitrag: 16.12.10, 14:10
  2. Aus einer Textarea in eine andere Textarea kopieren
    Von NTDY im Forum Javascript & Ajax
    Antworten: 3
    Letzter Beitrag: 24.04.09, 13:59
  3. replace textarea und Sonderzeichen...
    Von tomate im Forum Javascript & Ajax
    Antworten: 2
    Letzter Beitrag: 03.04.07, 15:18
  4. reload unterbinden
    Von Cemil im Forum PHP
    Antworten: 6
    Letzter Beitrag: 11.05.06, 21:02
  5. bbCode + Zeilenumbruch und Textarea / readonly+textarea
    Von NTDY im Forum Javascript & Ajax
    Antworten: 3
    Letzter Beitrag: 21.06.05, 00:28

Stichworte