Announcement

Collapse
No announcement yet.

2 Funktionen per onblur aufrufen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • 2 Funktionen per onblur aufrufen

    Hallo Community.

    Ich hoffe ihr könnt mir mit meinem Problem weiterhelfen.

    Ich würde gerne mit dem onblur Event zwei Javascript funktionen aufrufen.

    Allerdings funktioniert das so wie ich es vor habe nicht!

    Hier mein Beispiel:

    Code:
    onblur="this.value = formatNumber(this.value, 0, 2, true); disableFehlerhinweis('tbKreditbetrag');"
    Ich schätze mal das, dass Problem bei this.value liegt nur habe ich keine Idee wie ich es änders machen kann.

    Könnt ihr mir weiterhelfen?

    Viele Grüße,
    ego

  • #2
    Warum ruft du nicht eine Funktion auf, die ihrerseits beide einfach aufruft....
    Christian

    Comment


    • #3
      Das ist eine gute Idee

      Kann ich dann dieser Funktion einfach alle Parameter mitgeben?

      Comment


      • #4
        sicherlich und dann auf die "unteren" Funktionen verteilen
        Christian

        Comment


        • #5
          Okay, dass klappt leider noch nicht.

          Ich ruf jetzt wie gesagt eine Funktion auf in der ich wiederum meine zwei benötigten Funktionen aufrufe.

          Code:
          <asp:TextBox Width="128px" ID="tbKreditbetrag" runat="server" CssClass="left tbWertINPleft" style="display:block" ControlToValidate="tbKreditbetrag" onblur="this.value = calltbValidation(this.value, 0, 2, true, 'tbKreditbetrag')"></asp:TextBox>
          Dort verteil ich dann meine Paramenter

          Code:
              //-----------------------> Ruft Funktionen zur Textbox Validierung auf
          
              function calltbValidation(number, digits, decimalPlaces, withCommas, tbID) {
                  disableFehlerhinweis(tbID);
                  formatNumber(number, digits, decimalPlaces, withCommas);
              }
          Der ersten Funktion geben ich nur tbID. Die setzt dann so zusagen die Textbox zurück, falls ein User vorher eine Falsche eingabe gemacht hat.

          Code:
          //-----------------------> Textboxen zurücksetzen
          
              function disableFehlerhinweis(tbID) {
                  if (document.getElementById(tbID).value == '') {
                      document.getElementById(tbID).className = 'left tbWertINPleft';
                      document.getElementById("tabFehlerzeile").style.display = "none";
                  }
              }
          Die zweite Funktion formatiert dann die eingegeben Zahlen (z.B. 15000 in 15.000,00)

          Code:
          //-----------------------> Textboxen Formatieren
          
              function formatNumber(number, digits, decimalPlaces, withCommas) {
          
                      number = number.toString();
                      var simpleNumber = '';
          
                      // Strips out the dollar sign and commas.
                      for (var i = 0; i < number.length; ++i) {
                          if ("0123456789.".indexOf(number.charAt(i)) >= 0)
                              simpleNumber += number.charAt(i);
                      }
          
                      number = parseFloat(simpleNumber);
          
                      if (isNaN(number)) number = 0;
                      if (withCommas == null) withCommas = false;
                      if (digits == 0) digits = 1;
          
                      var integerPart = (decimalPlaces > 0 ? Math.floor(number) : Math.round(number));
                      var string = "";
          
                      for (var i = 0; i < digits || integerPart > 0; ++i) {
                          // Insert a comma every three digits.
                          if (withCommas && string.match(/^\d\d\d/))
                              string = "." + string;
          
                          string = (integerPart % 10) + string;
                          integerPart = Math.floor(integerPart / 10);
                      }
          
                      if (decimalPlaces > 0) {
                          number -= Math.floor(number);
                          number *= Math.pow(10, decimalPlaces);
          
                          string += "," + formatNumber(number, decimalPlaces, 0);
                      }
                      return string;
              }
          Die allerdings gibt mir die jetzt ein undefined zurück.

          Wenn ich das ganze debugge ist bis zum return zunächst alles in Ordnung. Nur dann steht in der Textbox ein undefined.

          Ich werde daraus nicht ganz schlau.

          Unabhängig voneinander funktionieren beide Funktionen :/

          Hat vielleicht jemand eine Idee was ich falsch mache?

          Comment


          • #6
            Du musst this noch als Parameter mitgeben und die Funmtion so abändern, dass sie keinen Returnwert hat, sondern in this den formatierten Wert schreibt. Oder du gibst als Returnwert der "Sammelfunktioen" den Wert der letzten Funktion zurück
            Zuletzt editiert von Christian Marquardt; 23.11.2012, 13:28.
            Christian

            Comment


            • #7
              Ich danke dir.

              Das hat funktioniert.

              Oder du gibst als Returnwert der "Sammelfunktioen" den Wert der letzten Funktion zurück
              Ich habs jetzt so gemacht.

              Danke, hast mir sehr geholfen!

              Comment


              • #8
                Schau Dir mal JQuery an. Das sollte Dir bei vielen Problemen helfen. Code direkt in den EventHandler im HTML/DOM schreibt man eigentlich gar nicht mehr.

                Comment

                Working...
                X