Avatar billede syswatch Novice
26. januar 2005 - 15:58 Der er 28 kommentarer og
1 løsning

Javascript til at tjecke en php variable

Hejsa...

Jeg er helt på bar bund her. Og ved ikke rigtig om jeg skal over i php gruppen ?

Jeg har en form hvor der er en checkbox, og en php variabel der indeholder et tal.
Kan man på nogen måde lave det sådan at man kun kan sætte kryds i checkboxen hvis tallet er over 100 fx ? Hvis den ikke er over 100 og man prøver skal der komme en lille advarsel med en tekst på skærmen ?
Avatar billede thb Nybegynder
26. januar 2005 - 16:13 #1
<?
$tal = 100;
?>

<input type="checkbox" name="ch"<?=(($tal==100)?"disabled='disabled'":"")?>>

Er det sådan noget du mener eller er jeg ikke helt med...

Thomas
Avatar billede syswatch Novice
27. januar 2005 - 08:55 #2
Ja, men jeg ønsker ikke at slå den fra. Jeg ønsker at der kommer en advarsels box frem med en defineret tekst i hvis man prøver at afkrydse den.
Avatar billede thb Nybegynder
27. januar 2005 - 14:31 #3
Hvorfor ikke bare slå den fra og skrive teksten på skærmen ?

Thomas
Avatar billede syswatch Novice
27. januar 2005 - 14:41 #4
Fordi det er der ikke plads til i et lille felt på 30x50 pixels.
Avatar billede thesurfer Nybegynder
27. januar 2005 - 14:46 #5
Hvor står "tallet" henne?
Avatar billede syswatch Novice
27. januar 2005 - 14:54 #6
Checkboxen kommer før variablen bliver beregnet...
Det er også derfor jeg ikke bare lige kan tjecke om "tallet" er størrere end fx.100.

Her lidt mere forklaring:
Tallet er summen af en masse ordrelinier som lægges sammen i en indkøbskurv.
Ovenover alle disse varelinier og totalen er en bjælke med forskellige boxe, og den ene er Fragtfri levering. Og det er den der skal kunne krydses af hvis ordretotalen er over fx. 100 kr.
Avatar billede thesurfer Nybegynder
27. januar 2005 - 15:00 #7
Prøv med:

<script type="text/JavaScript">
function boks()
{
f = document.FORMNAVN;
b = f.totalvaerdi;
b.disabled=(b.value >= 100)false:true;
}
</script>

<input type="text" name="totalvaerdi" onchange="boks()">
<input type="checkbox" name="fragtfrit" disabled>
Avatar billede thesurfer Nybegynder
27. januar 2005 - 15:08 #8
Det var da helt forkert :-)

Her er noget der er testet og virker:

<form name="minform">
<input type="text" name="totalvaerdi" onchange="boks()" onkeyup="boks()" onkeydown="boks()">
<input type="checkbox" name="fragtfrit" disabled>
<br><br><br>
<input type="text" name="ingenting">
</form>

<script type="text/JavaScript">
function boks()
{
f = document.minform;
t = f.fragtfrit;
v = f.totalvaerdi;
t.disabled=(v.value >= 100)?false:true;
}
</script>
Avatar billede thesurfer Nybegynder
27. januar 2005 - 15:11 #9
ahh... har lige læst dine indlæg igen :-)
Hang on..
Avatar billede roenving Novice
27. januar 2005 - 15:11 #10
Hvof ikke bare:

<form ...>
<input type="text" name="totalvaerdi" onchange="boks(this)" onkeyup="boks(this)" onkeydown="boks(this)">
<input type="checkbox" name="fragtfrit" disabled>
<br><br><br>
<input type="text" name="ingenting">
</form>

<script type="text/JavaScript">
function boks(fld){
  t = fld.form.fragtfrit;
  t.disabled = fld.value < 100;
}
</script>
Avatar billede thesurfer Nybegynder
27. januar 2005 - 15:14 #11
Sådan:

<form name="minform">
<input type="text" name="totalvaerdi">
<input type="checkbox" name="fragtfrit" onclick="boks()">
</form>

<script type="text/JavaScript">
function boks()
{
f = document.minform;
t = f.fragtfrit;
v = f.totalvaerdi;
if (v.value<100) {
    t.checked=false;
    alert("Du skal først bestille vare for minimum 100 kr");
}
}
</script>
Avatar billede thesurfer Nybegynder
27. januar 2005 - 15:15 #12
Husk at "totalvaerdi" jo skal være readonly, så man selv kan skrive værdien :-)
Avatar billede thesurfer Nybegynder
27. januar 2005 - 15:17 #13
roenving> Den skal ikke disables.. det er den onde thb der fik os til at tro det :-)
Avatar billede roenving Novice
27. januar 2005 - 15:17 #14
>>thesurfer

-- hvorfor bruger du ikke, at kaldet jo kommer fra et eller andet:

<form name="minform">
<input type="text" name="totalvaerdi" readonly="readonly">

<input type="checkbox" name="fragtfrit" onclick="boks(this)">
</form>

<script type="text/JavaScript">
function boks(fld){
  v = fld.form.totalvaerdi;
  if (v.value<100) {
    fld.checked=false;
    alert("Du skal først bestille vare for minimum 100 kr");
  }
}
</script>
Avatar billede thesurfer Nybegynder
27. januar 2005 - 15:19 #15
hmm.. glemte det :-)
troede at "this" i en <input> henviste til selve input-objektet.. :-)
Avatar billede roenving Novice
27. januar 2005 - 15:19 #16
-- og så måske også checke for om den faktisk er afkrydset, så der ikke spørges unødvendigt, efter at der er fjernet en vare ...
Avatar billede roenving Novice
27. januar 2005 - 15:20 #17
Det gør den også, bemærk, jeg bruger fld.form !-)
Avatar billede thesurfer Nybegynder
27. januar 2005 - 15:21 #18
ja sq :-)

Jeg ville også dobbeltjekke på server siden, hvis brugeren nu havde pillet ved noget :-)
Avatar billede syswatch Novice
27. januar 2005 - 15:24 #19
Hej drenge..
Det var da ligefør min mailbox gik ned med alle de mails lige pludselig. Nu må jeg heller komme igang med at teste, så i kan få lidt feedback ! :-)
Avatar billede roenving Novice
27. januar 2005 - 15:39 #20
-- man skal _aldrig_ putte noget i en database, som man ikke har valideret (bare tænk på sql-injection !-)

-- og her vil det hurtigt kunne ødelægge forretningen, hvis brugerne starter med at bestille en masse, hakker af for fragtfrit, og derefter fjerner de fleste af varerne ...
Avatar billede syswatch Novice
27. januar 2005 - 15:42 #21
Det kan man ikke her...
For man bestiler på 1 side, og vælger ydelser på en anden...
Avatar billede thb Nybegynder
27. januar 2005 - 15:44 #22
Jeg kan ikke gøre for dårligt forklaret spm... :D
Godt at der er nogle der kan forstå det.. hehe

Thomas
Avatar billede syswatch Novice
27. januar 2005 - 15:45 #23
Det ser ikke rigtig ud til at virke som det skal.
Her er hvad jeg har indtil videre....

<script language="JavaScript">
function boks(fld){
  v = fld.form.totalvaerdi;
  if (v.value<1500) {
    fld.checked=false;
    alert("Du skal først bestille vare for minimum 1500 kr");
  }
}
</script>


<form width="600" name="form1" style=\"display: inline;\" method=post action=makefile.php onKeyPress="disableEnterKey()" onSubmit="return checkform(this)">

<?php
print "<input type=\"checkbox\" name=\"ugelev\" onclick=\"boks(this)\"><b>Uge-Lev:</b>";
print "<input type=\"hidden\" name=\"totalvaerdi\" value=\"$ordersum\">";
?>
</form>
Avatar billede syswatch Novice
27. januar 2005 - 15:49 #24
Har det evt noget at gøre med at $ordersum er et decimal tal ? altså fx. 756,25 ?
Avatar billede roenving Novice
27. januar 2005 - 15:56 #25
Tjah, det kunne være noget af problemet ...

<script language="JavaScript">
function boks(fld){
  v = fld.form.totalvaerdi;
  if (parseInt(v.value)<1500) {
    fld.checked=false;
    alert("Du skal først bestille vare for minimum 1500 kr");
  }
}
</script>

-- og hvorfor gør du ikke din kode lettere at overskue med:


<input type="checkbox" name="ugelev" onclick="boks(this)"><b>Uge-Lev:</b>
<input type="hidden" name="totalvaerdi" value="<?php echo $ordersum ?>">
Avatar billede syswatch Novice
27. januar 2005 - 16:04 #26
Roenving: Det var lige det der skulle til ! Nu virker det som det skal...
Hvis du lige smider et svar kan vi få lukket spørgsmålet.
Avatar billede roenving Novice
30. januar 2005 - 15:08 #27
Velbekomme '-)

-- men strandløven (thesurfer !-) skal vel også have noget for sine ikke uvæsentlige inputs !-)
Avatar billede thesurfer Nybegynder
30. januar 2005 - 15:56 #28
roenving> Nah.. du mangler points, det gør jeg ikke :-)
.. du snupper dem bare :-)
Avatar billede roenving Novice
30. januar 2005 - 18:04 #29
Tak for point ;~}
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester