29. januar 2006 - 15:37Der er
10 kommentarer og 1 løsning
Submit laaang form men kun gem felter der har en værdi
Jeg har en liste på ca. 100 produkter som alle har en plusknap, for at tilføje 1 til kurven, samt et lille input felt hvor man kan taste et tal ind. Lidt alá funktionen på just-eat.dk.
Problemet er lidt, eller mere det upraktiske i det vil jeg sige, at man ikke kan taste en masse tal ind i produkternes felter hele vejen ned, og så tilføje en masse produkter til kurven på samme tid.
Så jeg skal have lavet det lidt om, sådan så man enten kan taste tal ind hele vejen ned og så submitte hele formen, hvor der så skal være en funktion, enten javascript eller asp, eller en kombination, som så smider de indtastede felter ind i den session der hedder kurv. Men hvis man kun trykker på et plustegn ud for et produkt, skal der kun tilføjes 1 produkt. Som det er nu, så har hvert produkt sin egen form, men det kan jeg forstille mig skal laves om til een stor form.
Nogle forslag eller eksempler jeg evt. kan bruge med lidt justering?
gentoo2005 >> JS er ikke "meget dårlig til alt andet end <input> felter" - men der er en hel del kodere, der er meget dårlige til JS. Faktisk handler dine problemer slet ikke om JS, men om ECMA-DOM bindingerne - men heller ikke dér er der problemer med form-elementer :)
donkazz >> Du kan bladre elementerne igennem og disable de inputs, der ikke har en value - eller samme value, som deres default-value - og evt. checkbokse og radioknapper, der ikke er valgt. Noget à la:
<script type="text/JavaScript"> function disableElms(f) { var sType, oNames={}, aElms=f.elements; for (var i=0; i<aElms.length; i++) { sType = aElms[i].type; if (sType=="radio"||sType=="checkbox") oNames[aElms[i].name]=1; else if (sType=="select-one"&&aElms[i].value==-1) aElms[i].disabled = true; else if (sType=="select-multi"&&aElms[i].selectedIndex==-1) aElms[i].disabled = true; else if (aElms[i].value==""||aElms[i].value==aElms[i].defaultValue) aElms[i].disabled = true; } for (x in oNames) { aElms = document.getElementsByName(x); for (i=0; i<aElms.length; i++) if (aElms[i].checked==false) aElms[i].disabled = true; } return true; } </script>
Okay ... men det er lidt skidt jo, for som det er nu bliver der tilføjet 1 hvis man ikke taster noget. Så skulle jeg fjerne den mulighed, sådan så man SKULLE skrive et nr. i feltet?
Hehe ja okay det var måske også lidt dårligt forklaret. Men altså, hvis man IKKE skriver noget i det inputfelt der er ud for et produkt, men bare trykker på plus-tegnet ved siden af det, så tilføjer den automatisk kun 1 stk. produkt til kurven. Men som jeg kan se det, så virker det ikke her, da scriptet deaktiverer alle tomme inputfelter, right? Og så ville jeg bare høre om der var en løsning på det, eller om jeg bare skal droppe det med at trykke på et plustegn... :)
Det er vist ikke noget, jeg har kinamands chance for at udtale mig om. Når du har besluttet dig for, hvordan din shop skal fungere - set fra brugerens position - og forklarer mig det i enkeltheder, kan jeg hjælpe dig med en løsning. Ellers er det lidt svært :)
Nåmen så har jeg besluttet mig, det var bare hvis det var umuligt det andet, så kunne jeg godt ændre planen for funktionen. :)
Så hvis man trykker på plustegnet udfor et produkt, skal den tilføje det man har tastet ind i input feltet til venstre for produktet. Hvis man ikke har tastet noget ind, og trykker på plustegner, skal den kun tilføje 1 stk. af produktet. I bunden af siden skal der tillige være en "Tilføj mange" funktion, som gør at man kan taste tal ind i alle de input-felter man vil, hele vejen ned igennem siden, og så trykke på denne knap, der så deaktiverer alle de steder man ikke har tastet noget ind, og tilføjer de produkter hvor man HAR tastet noget ind.
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.