Function Uebergabe (JS + ASP)
Dalia
- javascript
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
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
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]
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]
Aha,
summasumarum sind wir jetzt also (weitgehend) einer Meinung oder ?
HPR
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
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
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
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
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