WN

WN (https://www.wn.se/forum/index.php)
-   Klientsidans teknologier, design och grafik (https://www.wn.se/forum/forumdisplay.php?f=12)
-   -   Formulär Javascript (https://www.wn.se/forum/showthread.php?t=1061668)

niklas_SWED 2014-05-01 11:47

Formulär Javascript
 
Hej,

Har stött på ett litet problem på en sida jag utvecklar till en kund. På sidan ska man kunna välja län och sedan kommun. Har använt mig av javascript för detta. Dock skulle jag behöva ha med ett ID istället för kommunens namn.

<script type="text/javascript">


// State lists
var states = new Array();

states['Blekinge'] = new Array('Karlshamn','Karlskrona','Olofström','Ronneb y','Sölvesborg');

function setStates(){

cntrySel = document.getElementById('country');
stateList = states[cntrySel.value];

changeSelect('state', stateList, stateList);
setCities();

}

function changeSelect(fieldID, newOptions, newValues) {
selectField = document.getElementById(fieldID);
selectField.options.length = 1;
for (i=0; i<newOptions.length; i++) {
selectField.options[selectField.length] = new Option(newOptions[i], newValues[i]);
}

}

</script>

RESULTAT EFTER MAN VALT EX. BLEKINGE
--------------------------------------------------
<select id="state" onchange="setCities();" name="taxo[1][term]">
<option value="">Alla Städer</option>
<option value="Karlshamn">Karlshamn</option>
<option value="Karlskrona">Karlskrona</option>
<option value="Olofström">Olofström</option>
<option value="Ronneby">Ronneby</option>
<option value="Sölvesborg">Sölvesborg</option>
</select>

Jag skulle alltås vilja ha ett förbestämt ID i value istället för Karlshamn. Karlshamn ska dock stå kvar som namn i option.
Någon som har några tips på hur jag ska ändra i javascript koden? Har försökt leta efter lösning på nätet men inte hittat något som passar.

ANttila 2014-05-01 12:21

Sätt ID till kommunerna.
Sätt in ID i value istället för namn.
Klart?

niklas_SWED 2014-05-01 12:30

Den skapar ju kommunlistan med hjälp av javascript och då blir value automatiskt kommunens namn, jag skulle vilja ha ett eget ID där istället.

Förmodar att jag ska ändra något i koden
states['Blekinge'] = new Array('Karlshamn','Karlskrona','Olofström','Ronneb y','Sölvesborg');

samt koden
function changeSelect(fieldID, newOptions, newValues) {
selectField = document.getElementById(fieldID);
selectField.options.length = 1;
for (i=0; i<newOptions.length; i++) {
selectField.options[selectField.length] = new Option(newOptions[i], newValues[i]);

ANttila 2014-05-01 12:49

Citat:

Ursprungligen postat av ANttila (Inlägg 20491438)
Sätt ID till kommunerna.

Kod:

states['Blekinge'] = [
    {id: 1, name: 'Karlshamn'},
    {id: 2, name: 'Karlskrona'},
    {id: 3, name: 'Olofström'},
    {id: 4, name: 'Ronneby'},
    {id: 5, name: 'Sölvesborg'}
];

Dvs, mappa ihop id till kommunerna

Citat:

Ursprungligen postat av ANttila (Inlägg 20491438)
Sätt in ID i value istället för namn.

Kod:

function changeSelect(fieldID, newOptions, newValues) {
    selectField = document.getElementById(fieldID);
    selectField.options.length = 1;
    for (i=0; i<newOptions.length; i++) {
        selectField.options[selectField.length] = new Option(newOptions[i].name, newValues[i].id);
    }
}

Något sådant

ANttila 2014-05-01 12:51

Föresten, det här är inte en serverteknologi. Det är klienten som exekverar koden :)

niklas_SWED 2014-05-01 12:55

Haha ANttila :)

Tack för koden, ska prova runt lite.

Citat:

Ursprungligen postat av ANttila (Inlägg 20491444)
Föresten, det här är inte en serverteknologi. Det är klienten som exekverar koden :)


niklas_SWED 2014-05-01 13:10

Fungerade perfekt ANttila! Tack!

ANttila 2014-05-01 13:40

Citat:

Ursprungligen postat av niklas_SWED (Inlägg 20491447)
Fungerade perfekt ANttila! Tack!

Ser man på, inte ofta man träffar rätt direkt :D

tartareandesire 2014-05-01 13:53

Flyttade tråden till klientsidan. Det normala förfarandet är dock att man hämtar den här typen av data från en databas och levererar resultatet på serversidan vilket du också bör göra om du använder detta på flera ställen och/eller har lite fler val än bara fem städer i Blekinge.


Alla tider är GMT +2. Klockan är nu 09:20.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson