19. juli 2005 - 11:03Der er
27 kommentarer og 1 løsning
Disable submitknap hvis inputfelt overstiger en værdi fra databas
Jeg har en masse checkboxe som hver har tilknyttet en værdi fra database. Hver gang en checkbox bliver vinget af summeres værdien i et inputfelt ved navn "amount". Dette virker fint. Når værdien i inputfeltet "amount" overstiger værdien fra databasen skal min button disables.
Synes ikke rigtig jeg kan overskue hvad du vil, ud over, at du vil lægge en masse tal sammen, ved klik på nogle check boxe, og så skrive resultat ud i formatet 1.000,00 ?
function addSubtractValue(elm){ var amnt = elm.form.amount; var total = +rem1000Sep(amnt.value); var maxTotal = +elm.form.maxAmount.value; var newNum = +elm.value; var newTotal = total + elm.checked?newNum:-newNum; amnt.value = ins1000Sep(""+newTotal); elm.form.minSubmit.disabled = newTotal > maxTotal; }
Submit knap har name=minSubmit Jeg har lavet en ekstra input med name=maxamount og value=værdi fra database. Der kommer ingen fejl nu, men min submit knab bliver ikke disabled
Den laver desværre fejl. Jeg har sat det hele ind i en simpel kode:
<html> <head>
<script type="text/javascript"> function addSubtractValue(elm){ var amnt = elm.form.amount; var total = +rem1000Sep(amnt.value); var maxTotal = +elm.form.maxAmount.value; var fltNum = elm.name.replace(/^check(\d+)$/,"$1"); var newNum = +elm.form.elements["" + fltNum].value; var newTotal = total + elm.checked?newNum:-newNum; amnt.value = ins1000Sep(""+newTotal); elm.form.minSubmit.disabled = newTotal > maxTotal; }
function ins1000Sep(val){ val = val.split(","); val[0] = val[0].split("").reverse().join(""); val[0] = val[0].replace(/(\d{3})/g,"$1."); val[0] = val[0].split("").reverse().join("").replace(/^\./,""); return val.join(","); }
function rem1000Sep(val){ return val.replace(/\./g,""); } </script> </head> <body>
function addSubtractValue(elm){ var amnt = elm.form.amount; var total = +rem1000Sep(amnt.value); var maxTotal = +elm.form.maxAmount.value; var fltNum = elm.name.replace(/^check(\d+)$/,"$1"); var newNum = +elm.form.elements["" + fltNum].value; var newTotal = total + (elm.checked?newNum:-newNum); amnt.value = ins1000Sep(""+newTotal); elm.form.minSubmit.disabled = newTotal > maxTotal; }
-- og så har du to felter med samme navn, det må man godt, men så skal man tage specielle hensyn, men da du ikke skal bruge dubletten til noget, kan du ligesågodt slette den første !-)
Nu skriver den bare NaN i input amount...tæller ikke sammen.
Den fulde kode:
<html> <head>
<script type="text/javascript">
function addSubtractValue(elm){ var amnt = elm.form.amount; var total = +rem1000Sep(amnt.value); var maxTotal = +elm.form.maxAmount.value; var fltNum = elm.name.replace(/^check(\d+)$/,"$1"); var newNum = +elm.form.elements["" + fltNum].value; var newTotal = total + (elm.checked?newNum:-newNum); amnt.value = ins1000Sep(""+newTotal); elm.form.minSubmit.disabled = newTotal > maxTotal; }
function ins1000Sep(val){ val = val.split(","); val[0] = val[0].split("").reverse().join(""); val[0] = val[0].replace(/(\d{3})/g,"$1."); val[0] = val[0].split("").reverse().join("").replace(/^\./,""); return val.join(","); }
function rem1000Sep(val){ return val.replace(/\./g,""); } </script> </head> <body>
function addSubtractValue(elm){ var amnt = elm.form.amount; var total = +rem1000Sep(amnt.value); var maxTotal = +elm.form.maxAmount.value; var newNum = +elm.value; var newTotal = total + (elm.checked?newNum:-newNum); amnt.value = ins1000Sep(""+newTotal); elm.form.minSubmit.disabled = newTotal > maxTotal; }
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.