Frågan 30 mars 2005 19:42 #1 Tja!
Har sökt och kollat igenom en del trådar, även testar olika saker, men inte fått till ngn lösning på mitt problem.
Det här är läget:
Har ett stort formulär, där jag vill kunna inaktivera / aktivera tre textrutor, beroende på om en radioknapp står på "Ja", eller på "Nej".
När sidan laddas ska något av "Ja" resp. "Nej" kunna vara valt, beroende på en kryssruta i min Databas.
Hur ska jag lösa det här på bästa sätt?
Textrutorna som ska ändras heter "aNum", "vFrom" resp. "vTo" och radioknapparna heter "service" och kan vara av värdet "yes" eller "no".
Tack!
Nu har jag sökt ännu mer och hittat en grej som borde funka, men som inte gör det...?
<!--
function sEdit(){
var f = document.frmEdit;
if(f.service[0].checked == true){
f.aNum.disabled = true;
f.vFrom.disabled = true;
f.vTo.disabled = true;
}
else{
f.aNum.disabled = false;
f.vFrom.disabled = false;
f.vTo.disabled = false;
}
}
//-->
.....................................
<input type="radio" name="service" value="ja" style="background-color: transparent; border: 0px;" onclick="sEdit();">Ja
<input type="radio" name="service" value="nej" style="background-color: transparent; border: 0px;" onclick="sEdit();" checked>Nej
Men ovanstående händer inget alls, får inget felmeddelande heller, konstigt, eller är jag ute o cyklar?
Någon som har en bättre lösning på det här?
Tack!
Nu har jag löst det första problemet, det är precis som jag vill ha det.
<script type="text/javascript">
var arr = ["vFrom","vTo", "aNum"];
function ed(f, e, d) {
var elms = f.elements,
eLen = e.length,
dLen = d.length;
while (eLen-->0) elms[e[eLen]].disabled = false;
while (dLen-->0) elms[d[dLen]].disabled = true;
switch (elms["vFrom"].disabled) {
case true:
{
elms["vFrom"].parentNode.style.backgroundColor = "#FFFFFF";
elms["vFrom"].style.backgroundColor = "#E3E4B4";
elms["vFrom"].style.borderColor = "#C9C7BA";
elms["vTo"].parentNode.style.backgroundColor = "#FFFFFF";
elms["vTo"].style.backgroundColor = "#E3E4B4";
elms["vTo"].style.borderColor = "#C9C7BA";
elms["aNum"].parentNode.style.backgroundColor = "#FFFFFF";
elms["aNum"].style.backgroundColor = "#E3E4B4";
elms["aNum"].style.borderColor = "#C9C7BA";
f.vFrom.disabled = true;
f.vTo.disabled = true;
f.aNum.disabled = true;
f.vFrom.value = "";
f.vTo.value = "";
f.aNum.value = "";
} break;
case false:
{
elms["vFrom"].parentNode.style.backgroundColor = "#FFFFFF";
elms["vFrom"].style.backgroundColor = "#FFFFC0";
elms["vFrom"].style.borderColor = "#C8C8C8";
elms["vTo"].parentNode.style.backgroundColor = "#FFFFFF";
elms["vTo"].style.backgroundColor = "#FFFFC0";
elms["vTo"].style.borderColor = "#C8C8C8";
elms["aNum"].parentNode.style.backgroundColor = "#FFFFFF";
elms["aNum"].style.backgroundColor = "#FFFFC0";
elms["aNum"].style.borderColor = "#C8C8C8";
f.vFrom.disabled = false;
f.vTo.disabled = false;
f.aNum.disabled = false;
} break;
}
}
..........................................
<input type="radio" name="service" value="ja" style="background-color: transparent; border: 0px;" onclick="ed(this.form, ['vFrom'], ['vTo'])">Ja
<input type="radio" name="service" value="nej" style="background-color: transparent; border: 0px;" checked="checked" onclick="ed(this.form, ['vTo'], ['vFrom'])">Nej
Problemet är att jag måste kunna styra scriptet m.h.a asp. Dom här tre rutorna ska vara aktiva / inaktiva beroende på en kryssruta i min databas.
Jag kan trigga funktionen via bodytaggen, men det kommer bli ganska omständigt, så nu undrar jag om jag kan göra på något lättare sätt?
Tack!
J.N. Medlem sedan apr. 2003 1 660 inlägg HEJ!
Eftersom du skriver att du vill trigga funktionen onload, får jag intrycket att du inte vet hur du ska få radioknapparna att vara fyllda eller ej?
Det gör du genom att sätta checked på den beronde på vad du har i databasen.
if rs("rb1")=1 then a=" checked"
och sedan
<input type=radio<%=a%> osv>
Du gör likadant med disabled på textrutorna.
Tja
Tack för svaret, men löste det igårkväll.
Kan visa en lösning lite senare när jag kommer hem.
P Peter S Medlem sedan dec. 2002 5 483 inlägg Under tiden hinner jag posta en:
<form name="frmEdit">
<input type="radio" name="service" value="yes" onclick="c()"> Ja
<input type="radio" name="service" value="no" checked="checked" onclick="c()"> Nej
<input type="text" name="aNum">
<input type="text" name="vFrom">
<input type="text" name="vTo">
</form>
<script type="text/javascript">
function c(){
var cb = document.forms["frmEdit"].elements,
ch = cb["service"][1].checked;
cb["aNum"].disabled = ch;
cb["vFrom"].disabled = ch;
cb["vTo"].disabled = ch;
}
window.onload = c;
</script>