värdet på select(rull-lista) i jQuery?

Permalänk

värdet på select(rull-lista) i jQuery?

Snabb och nOObig fråga här! Jag försöker skapa en rullista för att fylla i standardvärden i ett formulär. Jag har för tillfället 4 options, en standard som är på toppen och 3 värden för användaren att använda.
Jag har fått den att trigga i jQuery när någon väljer något, men den switch jag tänkt använda för att fylla i värdena i formuläret tycks vilja plocka den option man valt plus alla efterföljande, vilket resulterar i att det alltid är den sista option som blir värdet som fylls i.

Så är ser koden ut:

HTML

<select id="standardFormat"> <option>Chose a standard format...</option> <option value="1">1x90 section</option> <option value="2">2x90 section</option> <option value="3">Universal Stall 904128</option> </select>

JScript

$('#standardFormat').change(function() { switch($('#standardFormat').val()) { case "1": alert("1x90 section"); case "2": alert("2x90 section"); case "3": alert("Universal Stall 904128"); } });

Visa signatur

Stationär: Processor: Intel i5 3.2GHz, RAM: 4Gb, Grafikkort: ATI Radeon HD 5850, OS: Windows 7 Proffessional x64
Laptop: ASUS K53E, Processor: Intel i5 2450M, RAM: 4Gb, Grafik: Integrerad Intel GMA HD, OS: Win7 Home Premium x64 och Xubuntu 10

Permalänk

var $standardFormat = $("#standardFormat"); $standardFormat.change(function() { switch($("option:selected", $standardFormat).val()) { case "1": console.log("1x90 section"); case "2": console.log("2x90 section"); case "3": console.log("Universal Stall 904128"); } })

Permalänk
Skrivet av zoolution:

var $standardFormat = $("#standardFormat"); $standardFormat.change(function() { switch($("option:selected", $standardFormat).val()) { case "1": console.log("1x90 section"); case "2": console.log("2x90 section"); case "3": console.log("Universal Stall 904128"); } })

Den ger ju rätt slutresultat, men den utför operationen en gång för varje option som finns efter den valda. Väljer man 2, så utförs 2 två gånger, väljer man 1, så utförs 1 tre gånger.
Inget som stör för mycket för slutresultatet, men det kanske inte är lika bra om rull-listen skulle vara väldigt lång.

Visa signatur

Stationär: Processor: Intel i5 3.2GHz, RAM: 4Gb, Grafikkort: ATI Radeon HD 5850, OS: Windows 7 Proffessional x64
Laptop: ASUS K53E, Processor: Intel i5 2450M, RAM: 4Gb, Grafik: Integrerad Intel GMA HD, OS: Win7 Home Premium x64 och Xubuntu 10

Permalänk
Skrivet av morphman86:

Den ger ju rätt slutresultat, men den utför operationen en gång för varje option som finns efter den valda. Väljer man 2, så utförs 2 två gånger, väljer man 1, så utförs 1 tre gånger.
Inget som stör för mycket för slutresultatet, men det kanske inte är lika bra om rull-listen skulle vara väldigt lång.

Du har glömt break; efter varje case. Det är en "feature" med switch(), att den ska kunna samla flera case till ett resultat.
Så här ska du göra:

$('#standardFormat').change(function() { switch($('#standardFormat').val()) { case "1": alert("1x90 section"); break; case "2": alert("2x90 section"); break; case "3": alert("Universal Stall 904128"); break; default: } });

Permalänk
Skrivet av morphman86:

Den ger ju rätt slutresultat, men den utför operationen en gång för varje option som finns efter den valda. Väljer man 2, så utförs 2 två gånger, väljer man 1, så utförs 1 tre gånger.
Inget som stör för mycket för slutresultatet, men det kanske inte är lika bra om rull-listen skulle vara väldigt lång.

Tittade inte igenom din kod tillräckligt väl. Du avslutar inte dina cases i switch:en med "break". Detta är ett måste när det kommer till JS. Att ha ett default case anses även god sed i JS.

Permalänk

Självklart, jag är ju efterblivet trög idag >.<
Detta är ju Switches 101

Tackar för svaret, nu funkar allt som det skall!

Visa signatur

Stationär: Processor: Intel i5 3.2GHz, RAM: 4Gb, Grafikkort: ATI Radeon HD 5850, OS: Windows 7 Proffessional x64
Laptop: ASUS K53E, Processor: Intel i5 2450M, RAM: 4Gb, Grafik: Integrerad Intel GMA HD, OS: Win7 Home Premium x64 och Xubuntu 10