Avatar billede f_rollo Nybegynder
05. april 2004 - 17:37 Der er 10 kommentarer og
1 løsning

Skal sikre at værdien i et JavaS-tekstfelt har bestemte værdi

Hey.

I forbindelse med en indkøbskurv bruges denne kode:

<script type="text/javascript">vareFelt(document,'VARENSNAVN',50.00,'CSS-FIL','alert(\'Biletterne til fredag er nu tilføjet din bestillingsliste\')')</script>

På det vises i browseren får jeg en fin lille tekstfelt hvor man selv angiver antal.
Jeg ville gerne have at man ikke kunne vælge mellem 1-9. Jeg vil kun have værdierne 0 (nul) og alt på 10 og derover.
Hvis brugeren taster mellem 1 og 9 skal der komme en alertboks og fortælle dette samt sætte tallet til igen.

How is that done?

Med til koden hører også:

function vareFelt(inputFrame, navn, pris, classInput, eventOption) {
    eventOption = (typeof eventOption == 'undefined') ? "" : eventOption;
    var antal = 0;
    for (var x=0; x<kurv.length; x++) {
        if (kurv[x].navn==navn) {
            antal = kurv[x].antal;
            }

som ligger i en anden fil, men som 'samarbejder' med den anden...
Avatar billede roenving Novice
05. april 2004 - 17:55 #1
Når brugeren har valgt kan du:

Hvis det er tal:
if(!antal==0&&!antal>9){
  alert('Der skal vælges 0 eller mindst 10 billetter !-)');
  //return false;//hvis det skal forhindre nogle handlinger, f.eks. submit
}

Hvis det er tekst:
if(!antal.match(/^(0|[1-9]\d)/)){
  alert('Der skal vælges 0 eller mindst 10 billetter !-)');
  //return false;//hvis det skal forhindre nogle handlinger, f.eks. submit
}

-- og i den sidste vil den acceptere op til 99, hvis du også vil acceptere større tal, skal der bare et + efter d'et !-)
Avatar billede f_rollo Nybegynder
05. april 2004 - 18:13 #2
Hvor skal det indsættes?

Noget lign:

<script type="text/javascript">vareFelt(document,'VARENSNAVN',50.00,'CSS-FIL','alert(\'Biletterne til fredag er nu tilføjet din bestillingsliste\')')
if(!antal==0&&!antal>9){
  alert('Der skal vælges 0 eller mindst 10 billetter !-)');
  return false;
}
</script>
Avatar billede roenving Novice
05. april 2004 - 18:16 #3
Da du ikke har fortalt noget om, hvornår tallet indsættes og hvornår kan jeg ikke svare !-)

Du har jo ikke vist de tekstfelter, hvor det forekommer !-)

-- og den javascript-ting du viste sidst i dit spørgsmål er uafsluttet, så den kan jeg heller ikke få noget ud af !o]
Avatar billede f_rollo Nybegynder
05. april 2004 - 18:17 #4
Jeg afprøver det... du kan du jo få et link når det virker... :-)
Avatar billede f_rollo Nybegynder
07. april 2004 - 12:20 #5
Nå der kan man bare... jeg er dårlig til java...
Det virker stadig ikke...

Men jeg fandt en funktion i scriptet hvor man kan sætte max antal varer der kan købes, og forestillede mig at det kunne laves om til minimumsvarer der skal købes...
Har bare lige brug for lidt hjælp... igen.

Det hele skal ende med at se således ud:
http://www.gardenliving.dk/udstillere_.asp?id=18_ blot vil jeg gerne have at man ikke kan købe mindre end ti billetter.

Selve javascriptkoden er her:
http://www.gardenliving.dk/dk/kurv/varekurv.js
og styrres af denne:
http://www.gardenliving.dk/dk/kurv/startparametre.js

Koden fra varekurv.js som jeg tror er den der skal ændres er:

maxVarer = (typeof maxVarer == 'undefined') ? 0 : maxVarer;
[en masse andet...]
    if (maxVarer!=0 && x>=maxVarer) {
        alert('Du kan kun bestille '+maxVarer +' varetyper per ordre!');
        }

tallet til maxVare hentes fra startparametre.js og ser således ud:
maxVarer = 10;
// maxVarer angiver max. antal af varenumre, som kan bestilles.  ;
// Sættes maxVarer=0 er der ingen øvre grænse.  ;

Jeg prøvede selv at ændre:
    if (maxVarer!=0 && x>=maxVarer) {
til:     if (maxVarer!=0 && x<=maxVarer) {
Det virkede logisk nok som om at så ville den forlange minimum 10 billetter, men da kunden/brugeren ikke behøver at købe 10 billetter i alle kategorier gav det et problem. noget med en masse alert bokse og ingen varer i kurven...

Jeg skal lade det være sagt med det samme at jeg er dum som en dør til JS og sikkert skal guides hele vejen igennem...

Er problemet til at løse eller...

mvh
Nico
Avatar billede roenving Novice
07. april 2004 - 14:32 #6
Det er en slags tin, som dit varekurv-script slet ikke har med ...

maxVarer er antallet af linjer på ordren, det har altså intet med hvor mange af hver vare at gøre ...

På trods af standard-indstillingen vil du kunne bestille 100.000.000 stk. af hvadsomhelst !-)

Men da det så er et tilfælde, som ikke ellers er med i dit script, skal det jo tilføjes, og det gør du i to tempi:

I den linje, hvor feltet står ændrer du til:

vareFelt(document,'Fredag',50.00,'type1','checkNum(this)')

Så tilføjer du foroven, hvor der står en stump script i forvejen:

function checkNum(fld){
if(!fld.value.match(/^(0|[1-9]\d+)/)){
  alert('Der skal vælges 0 eller mindst 10 billetter !-)');
  fld.select();
  fld.focus();
  return false;
}}
Avatar billede f_rollo Nybegynder
07. april 2004 - 16:52 #7
Skal jeg tilføje:
function checkNum(fld){
if(!fld.value.match(/^(0|[1-9]\d+)/)){
  alert('Der skal vælges 0 eller mindst 10 billetter !-)');
  fld.select();
  fld.focus();
  return false;
}}
på selve hjemmesiden eller i varekurv.js?
Avatar billede f_rollo Nybegynder
07. april 2004 - 16:57 #8
Nevermind det fandt jeg ud af... :-) helt dum er jeg alligevel ikke...

Kan det laves således at den sætter feltet til 0 igen efter alert boksen?
Hvis jeg f.eks trykker 5 nu så giver den alert boks og så bliver den ellers på 5...
Avatar billede roenving Novice
07. april 2004 - 17:02 #9
Men den bliver markeret, så folk kan ændre det ...

Nåh, ja, hvis de ignorerer ...

function checkNum(fld){
if(!fld.value.match(/^(0|[1-9]\d+)/)){
  alert('Der skal vælges 0 eller mindst 10 billetter !-)');
  fld.value = '0';
  fld.select();
  fld.focus();
  return false;
}}

-- og om du skal placere den det ene eller det andet sted, tjah, det er jo ligegyldigt, men selv ville jeg lade varekurv være uberørt, når det er et sammenhængende script ...

Den eneste begrænsning på placering af det, er at der i dokumentet skal være <script></script>-tags imellem <html> og </html>

-- og så velbekomme '-)
Avatar billede f_rollo Nybegynder
07. april 2004 - 17:27 #10
Så virker det til et 13 tal

Enormt mange tak for hjælpen...

mvh
Nico
Avatar billede roenving Novice
07. april 2004 - 17:38 #11
-- og jeg takker for points ;~}
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

Seneste spørgsmål Seneste aktivitet
I går 10:21 Ny printer, men hvilken Af mort1 i Printere
13/0819:41 USB på Linux Af Uvanga i Linux
12/0818:26 Hvilken type mus Af mort1 i PC
11/0813:21 ms Forms Af leahcim i Andet software
10/0821:30 Blokeret på Snapchat? Af LineP i Chat & Messaging