webForumDet fria alternativet

uppdatera formulärvariabler onSubmit()?

1 svar · 288 visningar · startad av Diggin

DigginMedlem sedan juli 20026 inlägg
#1

Jag har några SELECT boxar som jag vill ändra värdena i vid onSubmit().

onSubmit="return changeSpecValue(arrItemsValue1, arrItemsValue2);"

Dock blir det nåt strul när variablerna ska sättas. I nedanståend kod har proj och spec fått korrekta värden men när jag försöker sätta dom får document.form.varname.value värdet undefined.

 function changeSpecValue(ValueProj, ValueSpec)
{
  if(!document.myChoices.thirdChoice.value)
    {
      document.myChoices.thirdChoice.value = 0;
    }
  if(document.myChoices.secondChoice.value != 0){
    var proj = ValueProj[document.myChoices.secondChoice.value];
    document.myChoices.secondChoice.value = proj;
  }
  if(document.myChoices.thirdChoice.value != 0){
    var spec = ValueSpec[document.myChoices.thirdChoice.value];
    document.myChoices.thirdChoice.value = spec;
  }

//SPÅRUTSKRIFT
  alert(document.myChoices.secondChoice.value + "-" + proj + ", " + document.myChoices.thirdChoice.value + "-" + spec);
  return true;
}

Nån som ser problemet?

JojoxxMedlem sedan juni 20004 308 inlägg
#2

Jag tycker det ser ut som du blandar variabel/array/objekt-referesner hejvilt.

När du anropar funktionen changeSpecValue gör du det med 2 argument, i exemplet skickar du med arrItemsValue1 och arrItemsValue2. Vad är detta? Är det variabler eller arrayer från någon annan del av sidan? Det skulle även kunna vara objekt-referenser till <select>-objekt eftersom IE är lite slaphänt och tillåter det mesta, men i så fall bör du använda hela namnet på objektet (document.form.osv). variablen proj verkar du i alla fall få en sträng i eftersom du försöker sätta egenskapen ".value" till detta värde. Men här dyker en annan fråga upp. Du skriver att du vill byta värde på några select-boxar. Select-boxar är uppbyggda med ett index, där varje <option> i <select>-boxen har ett indexnummer från 0 och uppåt. För att markera ett värde i en <select>-box (ej multiple) använder du document.formnamn.selectnamn.selectedIndex=X (där X är index-numret). För att byta värde på en <option> använder du document.formnamn.selectnamn[X].value="värde" och för att byta text på <option> använer du document.formnamn.selectnamn[X].text="text" (X är fortfarande index-numret för aktuell <option>).

Sist men icke minst. Välkommen till wF :)

127 ms totalt · 3 externa anrop · v20260731065814-full.0e50b1ef
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)