Dalia: Function Uebergabe (JS + ASP)

Hallo Zusammen,

ich moechte ein HTML Zeile schreiben wodurch ich in onblur eine JavaScript funtion aufrufen moechte mit einer Wert uebergabe.

document.writeln('<td align="center" width="100"><input style="text-align:right;" Type="textbox" name="txtBalance<%=i%>"  onblur="CalcAmountTot('<%=numrecords%>')" size= "15" maxlength="15"></td>');

dass functioniert aber nicht!

vielen Dank fuer Eure Hilfe,

Dalia

  1. Hallo Zusammen,

    Hi Dalia,

    ich moechte ein HTML Zeile schreiben wodurch ich in onblur eine JavaScript funtion aufrufen moechte mit einer Wert uebergabe.

    document.writeln('<td align="center" width="100"><input style="text-align:right;" Type="textbox" name="txtBalance<%=i%>"  onblur="CalcAmountTot('<%=numrecords%>')" size= "15" maxlength="15"></td>');

    Das wird keine HTML-Zeile, sondern eine HTML-Tabellen-Zelle mit einem Input-Feld darin. Was bitte verstehst Du unter Type="textbox" ? Meinst Du vielleicht type="text" ?

    Jetzt kenne ich den sonstigen Kontext nicht, aber ersetze doch mal:
    alle ' durch " und vorher alle " durch "
         -       -                 -       --

    weißt Du was ich meine ? Halte mich auf dem Laufenden !

    Gruß
    Hans-Peter

  2. Hallo,

    ich moechte ein HTML Zeile schreiben wodurch ich in onblur eine JavaScript funtion aufrufen moechte mit einer Wert uebergabe.

    document.writeln('<td align="center" width="100"><input style="text-align:right;" Type="textbox" name="txtBalance<%=i%>"  onblur="CalcAmountTot('<%=numrecords%>')" size= "15" maxlength="15"></td>');

    dass functioniert aber nicht!

    Natürlich nicht, ist ja auch irgendwie sinnlos, eine Eingabefeld "txtBalance<%=i%>" zu nennen und einer Funktion den Wert "<%=numrecords%>" zu übergeben. Vielleicht verwechselst du da etwas mit einer anderen Programmiersprache.

    So sollte es funktionieren:

    ...type="text"...
             ^^^^
    text, nicht textbox

    ...name="txtBalance' + i + '"...
                        ^^^^^^^
    String-Literal unterbrechen und Wert von i einfügen

    ...onblur="CalcAmountTot(''" + numrecords + "'')"...
                                 ^^^^^^^^^^^^^^^^
    String-Literal unterbrechen und Wert von numrecords einfügen.

    nochmal im ganzen:

    document.writeln('<td align="center" width="100"><input style="text-align:right;" type="text" name="txtBalance' + i + '"  onblur="CalcAmountTot('' + numrecords + '')" size= "15" maxlength="15"></td>');

    Sollte funktionieren,

    Robert

    http://www.designauswahl.here.de
    mit kostenlosem Webseiten-Generator ROBE.dit
    [more than a HTMLE.dit]

    1. Hallo nochmal,

      Natürlich nicht, ist ja auch irgendwie sinnlos, eine Eingabefeld "txtBalance<%=i%>" zu nennen und einer Funktion den Wert "<%=numrecords%>" zu übergeben. Vielleicht verwechselst du da etwas mit einer anderen Programmiersprache.

      Tschuldigung, hab übersehen, dass du ASP verwendest.

      ...type="text"...
               ^^^^
      text, nicht textbox

      Das gilt trotzdem.

      ...onblur="CalcAmountTot(''" + numrecords + "'')"...
                                   ^^^^^^^^^^^^^^^^
      String-Literal unterbrechen und Wert von numrecords einfügen.

      War falsch.
      Die Backslashs () vor den einfachen Anführungszeichen musst du aber trotzdem einfügen. Wahrscheinlich liegt hier der Fehler.
      Also so:

      onblur="CalcAmountTot('<%=numrecords%>')"

      Da du ja 'einfache Anführungszeichen' bereits für das document.writeln('...') verwendet hast.

      Robert

      http://www.designauswahl.here.de
      mit kostenlosem Webseiten-Generator ROBE.dit
      [more than a HTMLE.dit]

      1. Aha,
        summasumarum sind wir jetzt also (weitgehend) einer Meinung oder ?

        HPR

      2. Hallo,

        onblur="CalcAmountTot('<%=numrecords%>')"

        das geht auch nicht!
        Hier ist mein code:

        <%for i = numrecords + 1 to numrecords+ 3 %>
        <tr>
         <td> </td>
        <td><input  Type="textbox" name="txtDate<%=i%>" size= "15" maxlength="15">
        <A HREF="javascript:void(0)" onClick="newWindow(document.Balance.txtDate<%=i%>,event)"><IMG SRC="calendar.gif" width="20" height="15" border="0" ALT="View Calendar"></A>
             </td>
        <script language = "JavaScript" type="text/javascript">
        if(document.layers) {
         document.writeln('<td align="center" width="100"><input Type="textbox" name="txtBalance<%=i%>" onblur="CheckValBal(<%=numrecords%>)" size= "15" maxlength="15" ></td>');
        document.writeln(' <td align="center" width="100"><input Type="textbox" name="txtBaseBalance<%=i%>" onblur="CheckValBal(<%=numrecords%>)" size= "15" maxlength="15"></td>');
            }
        else {
        document.writeln('<td align="center" width="100"><input style="text-align:right;" Type="text" name="txtBalance<%=i%>"  onblur="CheckValBal('<%=numrecords%>')" size= "15" maxlength="15"></td>");
        document.writeln('<td align="center" width="100"><input style="text-align:right;" Type="text" name="txtBaseBalance<%=i%>" onblur="CheckValBal('<%=numrecords%>')" size="15" maxlength="15"></td>");
        }
        </script>
        <td><input  Type="textbox" name="txtMemo<%=i%>" size= "25" maxlength="25"></td>
        </td>
        <td> </td>
        </tr>
        <% next %>

        das ist ASP (VBScript) mit JavaScript

        was ich da machen moechte einfach die eingabe Felder testen

        function CheckValBal(nr)
        {
        for (i = nr + 1; i <= nr + 3; i++){
        if (isNaN(document.Balance["txtBalance"+i].value) == true)
         {document.Balance["txtBalance"+i].value = 0;}
          Bal = eval(document.Balance["txtBalance"+i].value);
          BaseBal = eval(document.Balance["txtBaseBalance"+i].value);

        document.Balance["txtBalance"+i].value = formatDecimal(Bal,2);
          document.Balance["txtBaseBalance"+i].value = formatDecimal(BaseBal,2);

        }
         }

        wobei formatDecimal ist
        function formatDecimal(Number, dec)
        {
        Number += "";
        RoundNumber = Math.floor(Number*Math.pow(10,dec)+0.5)/Math.pow(10,dec);
        RoundNumber +=  "";
        if ( RoundNumber.indexOf(".") != -1)
          {
          decPoint=(RoundNumber.length - RoundNumber.indexOf(".")-1);
           switch(decPoint)
           {
         case 0:
            break;
         case 1:
            RoundNumber += "0";
            break;
         }
          }
          else
          { RoundNumber += ".00";}
          number = Comma(RoundNumber);
          return number;
        }

        und Comma ist:

        function Comma(number) {

        number = '' + number;
        decimalpart = number.substring(number,number.length - 3);
        integerpart = number.substring(0,number.length-3);
        if (integerpart.length > 3) {
          var mod = (integerpart.length)% 3;
          var output = (mod > 0 ? (integerpart.substring(0,mod)) : '');
          for (n=0 ; n < Math.floor(integerpart.length  / 3); n++) {
         if ((mod == 0) && (n == 0))
           output += integerpart.substring(mod+ 3 * n, mod + 3 * n + 3);
         else
           output+= ',' + integerpart.substring(mod + 3 * n, mod + 3 * n + 3);
         }
         output += decimalpart;
          return (output);
          }
        else return number;
        }

        ich will nur die eingabefelder formatieren:

        Aber ich kriege es einfach nicht hin

        vielen Dank,

        Dalia

        1. Liebe Dalia,

          ich will ja wirklich nicht stören, aber

          <td><input  Type="textbox" name="txtDate<%=i%>" size= "15"

          es gibt kein <input type="textbox"

          und statt

          document.writeln('<td align="center" width="100"><input

          würde ich empfehlen
             document.writeln ("<td align="center" width="100" ...

          und jetzt mische ich mich ganz sicher nicht mehr ein.

          Grüßle

          1. Lieber Hans-Peter und Robert,

            vielen Dank fuer Eure Hilfe

            document.writeln ("<td align="center" width="100" ...

            entweder

            document.writeln('<td align="center" width="100"><input style="text-align:right;" Type="text" name="txtBalance<%=i%>"  onblur="CheckValBal('<%=numrecords%>')" size= "15" maxlength="15"></td>');

            functioniert jetzt

            type="textbox" oder type="text" ist egal functioniert mit beides.

            mein prb. ist irgendwie hier:

            function CheckValBal(nr)
            {
            nr = '' + nr;
            alert(nr);
            for (i = nr + 1 ; i <= nr + 3; i++){
            if (isNaN(document.Balance["txtBalance"+i].value) == true)
             {document.Balance["txtBalance"+i].value = 0;}
            if (isNaN(document.Balance["txtBaseBalance"+i].value) == true)
             {document.Balance["txtBaseBalance"+i].value = 0;}
              Bal = eval(document.Balance["txtBalance"+i].value);
              BaseBal = eval(document.Balance["txtBaseBalance"+i].value);

            document.Balance["txtBalance"+i].value = formatDecimal(Bal,2);
              alert(" Bal= " + document.Balance["txtBalance"+i].value + " i= " + i);
              document.Balance["txtBaseBalance"+i].value = formatDecimal(BaseBal,2);
              alert(" Base= " + document.Balance["txtBaseBalance"+i].value + " i= " + i);
              }

            kriege ich i nicht incrementiert!

            vielen Dank,

            Dalia

            1. Hallo Ihr Beide,

              vielen Dank fuer Eure Hilfe!

              Das war wirklich doof von mir
              die Loesung ist und Laueft einwandfrei!

              document.writeln('<td align="center" width="100"><input style="text-align:right;" Type="textbox" name="txtTransaction<%=i%>" value="<%=rsTransaction("Amount")%>" onblur="CheckValBal('<%=i%>')" size= "15" maxlength="15" ></td>');
                    document.writeln('<td align="center" width="100"><input style="text-align:right;" Type="textbox" name="txtBaseTransaction<%=i%>" value="<%=rsTransaction("BaseAmount")%>" onblur="CheckValBase('<%=i%>')" size="15" maxlength="15"></td>');

              wo:

              function CheckValBal(i)
              {
              if (isNaN(document.Transaction["txtTransaction"+i].value) == true)
               {document.Transaction["txtTransaction"+i].value = 0;}
                Trans = eval(document.Transaction["txtTransaction"+i].value);
                document.Transaction["txtTransaction"+i].value = formatDecimal(Trans,2);
                }

              function CheckValBase(i)
              {
              if (isNaN(document.Transaction["txtBaseTransaction"+i].value) == true)
               {document.Transaction["txtBaseTransaction"+i].value = 0;}
               BaseTrans = eval(document.Transaction["txtBaseTransaction"+i].value)
               document.Transaction["txtBaseTransaction"+i].value = formatDecimal(BaseTrans,2);
              }

              das Alles andere war uff! zu doof man muss auch ein wenig denken......

              Dalia

    2. Hallo,

      dito

      document.writeln('<td align="center" width="100"><input style="text-align:right;" Type="textbox" name="txtBalance<%=i%>"  onblur="CalcAmountTot('<%=numrecords%>')" size= "15" maxlength="15"></td>');

      dass functioniert aber nicht!

      Natürlich nicht, ist ja auch irgendwie sinnlos, eine Eingabefeld "txtBalance<%=i%>" zu nennen und einer Funktion den Wert "<%=numrecords%>" zu übergeben. Vielleicht verwechselst du da etwas mit einer anderen Programmiersprache.

      ich kennen den kontext zwar ebenfalls nicht, aber warum soll das sinnlos sein ? Das ist völlig korrekte ASP Syntax (wenn man mal von den Hochkommas und Anführungszeichen mal absieht.

      CU
      Hans-Peter