webForumDet fria alternativet

Inaktivera tre Textrutor m.h.a Radioknappar

JavaScript

5 svar · 294 visningar · startad av MickeA.com

Medlem sedan feb. 20034 441 inlägg
Frågan#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!

Medlem sedan feb. 20034 441 inlägg
#2

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&nbsp;&nbsp;
<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!

Medlem sedan feb. 20034 441 inlägg
#3

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&nbsp;&nbsp;
<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!

Medlem sedan apr. 20031 660 inlägg
#4

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.

Medlem sedan feb. 20034 441 inlägg
#5

Tja
Tack för svaret, men löste det igårkväll.

Kan visa en lösning lite senare när jag kommer hem.

Medlem sedan dec. 20025 483 inlägg
#6

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>
275 ms totalt · 4 externa anrop · v20260731065814-full.2f471f9e
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
144 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)