Per Thomsen wrote in dk.edb.internet.webdesign.clientside:
> Catrina Kristensen wrote:
> > <td>Number of copies:</td>
> > <td><input type="text" size="3" name="antal"
> > onchange="this.form.amount.value =
> > (this.value.match(/^[1-9]\d*$/)) ? 4800 + (parseInt(this.value,
> > 10) - 1) * 500 : '';" /></td>
> >
> > <td>Your price (DKK):</td>
> > <td><input type="text" name="amount" readonly="readonly" /> </td>
>
> Jeg ville nok starte med at ligge det ud i en funktion i headeren:
> <script type="text/javascript" language="javascript">
>
> function antal2amount( ) {
> // Dette er selvfølgelig antaget at det er den første
> // form på siden. Du kan også give formularen et navn og så
> // tilgå den med 'navn'.
> var objAntal = document.forms[0].elements['antal'];
> var objAmount = document.forms[0].elements['amount'];
>
> var intAntal = parseInt( objAntal.value, 10 );
> if( !isNaN(intAntal) ) {
> var intAmount = null;
> if( intAntal==1) {
> intAmount = 4800;
> } else {
> intAmount = 4800+(intAntal-1)*500;
> }
> objAmount.value = intAmount;
> }
>
> }
> </script>
>
> Så ville jeg kalde den på onchange handleren.
>
> <input bla.bla.bla. onchange="antal2amount();" />
>
> Hvis du vil insisistere på at gøre det inline, tror jeg måske du skal
> prøve med:
> onchange="this.form.amount.value = ( (parseInt(this.value,10)==1) ?
> '4800' : ''+(4800 + ( (parseInt(this.value,10)-1) * 500 ) ) )" />
>
> hvis det ikke bedre, kan du jo spørge igen, men så forklar venligst hvad
> det er der går galt. (Giver det et forkert resultat? kommer der ingen
> tal i amount? Melder browseren fejl?).
>
> MVH Per Thomsen,
>
http://www.pert.dk/
Mange tak for svar, men det virker stadig ikke - der returneres ingenting i
amount feltet, når jeg indtaster en værdi i antal feltet.
Jeg skriver lige mine koder:
<head>
<script type="text/javascript">
function GoSetAmountValues() {
var objAntal = document.forms[0].elements['antal'];
var objAmount = document.forms[0].elements['amount'];
var intAntal = parseInt( objAntal.value, 10 );
if( !isNaN(intAntal) ) {
var intAmount = null;
if( intAntal==1) {
intAmount = 4800;
} else {
intAmount = 4800+(intAntal-1)*500;
}
objAmount.value = intAmount;
}
}
</script>
</head>
<body>
<form>
<input name='antal' onchange="javascript:GoSetAmountValues();"></td>
<input name='amount' readonly="readonly">
</form>
</body>
Hvad er det, jeg har misforstået her?
--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! =>
http://www.html.dk/tutorials