webForumDet fria alternativet

Hur återställs textfältsborder?

6 svar · 328 visningar · startad av J.N.

J.N.Medlem sedan apr. 20031 660 inlägg
#1

HEJ!

Jag har slagit min hjärna ihop med några inlägg på WF och fått ihop denna funktion för att ändra bakgrundsfärg och border på ett textfält vid klick i en radiobutton:

function en_dis(rgb,tf){
	form.mangd.style.background = rgb;
	if (rgb != ""){ rgb = '2px dashed ' +rgb} else{ rgb="2px solid";}
	form.mangd.style.border = rgb;
	form.mangd.disabled = tf;
}

kallas via OnClick="en_dis('#eeeeee',true)

Min fråga är:

Hur får jag en korrekt återställning av '2px solid' till det det var från början? Nu har jag endast gissat ovanstående, vilket är fel, bordern är inte solid.
Att sätta rgb="" går inte heller, för då blir det ingen border alls.

JojoxxMedlem sedan juni 20004 308 inlägg
#2

Ett litet exempel;

<script type="text/javascript">
function en_dis(obj,checked){
	obj.style.background=(checked)?"#eeeeee":"";
	obj.style.border=(checked)?"dashed 2px":"solid 2px";
	obj.disabled=!checked;
}
</script>

<form>
<input type="text" id="mangd" name="mangd" style="border:solid 2px" disabled="disabled" />
<input type="checkbox" onclick="en_dis(document.getElementById('mangd'),this.checked)" />
</form>

Var det ungefär så du tänkt dig?

J.N.Medlem sedan apr. 20031 660 inlägg
#3

HEJ!

Nja, nästan, det ska vara en radiobutton istället, men det är en bit på väg.

JojoxxMedlem sedan juni 20004 308 inlägg
#4

Ok, trodde du hade skrivit fel. En radio-knapp måste du ha i grupp om minst 2 ifall du skall kunna växla mellan dem.

<script type="text/javascript">
function en_dis(obj,checked){
	obj.style.background=(checked)?"#eeeeee":"";
	obj.style.border=(checked)?"dashed 2px":"solid 2px";
	obj.disabled=!checked;
}
</script>

<form>
<input type="text" id="mangd" name="mangd" style="border:solid 2px" disabled="disabled" />
<input type="radio" name="mangdx" onclick="en_dis(document.getElementById('mangd'),this.checked)" />
<input type="radio" name="mangdx" onclick="en_dis(document.getElementById('mangd'),!this.checked)" checked="checked" />
</form>
J.N.Medlem sedan apr. 20031 660 inlägg
#5

HEJ!

Nja, en ska inte tolkas som en, det ska tolkas som en :L
(Om det var det du blev lurad av?)

Men, det löser inte hela mitt problem ändå, för det är biten med 'solid 2px' som jag inte vill ha, där ska stå 'default', dvs jag vet ju inte hur användaren har ställt in sin webbläsare, vilket färgschema de har tex. Då kan jag inte skriva en 'solid 2px'-linje runt, jag vill återställa den linje som jag skrev över med 'dashed 2px'.

Är du/ni med?

En undran till:
Vad skiljer din kod från min, förutom att du kodar mycket rättare än mig? För mig verkar det som att det fungerar likadant?
Background, border och disabled fungerar som hos mig, i alla fall i IE?

JojoxxMedlem sedan juni 20004 308 inlägg
#6

J.N. skrev:

...där ska stå 'default'...

Istället för att skriva över egenskaper för objektet (text-fältet) så kan du tilldela det en klass. Sedan anger du egenskaperna för klassen istället. När du sedan plockar bort klasstillhörigheten får det tillbaks sitt ursprungliga utseende.

<style type="text/css">
.markerad { background-color:#eeeeee; border:solid black 2px; }
</style>
<script type="text/javascript">
function en_dis(obj,checked){
	obj.className=(checked)?"markerad":"";
	obj.disabled=!checked;
}
</script>

<form>
<input type="text" id="mangd" name="mangd" disabled="disabled" />
<input type="radio" name="mangdx" onclick="en_dis(document.getElementById('mangd'),this.checked)" />
<input type="radio" name="mangdx" onclick="en_dis(document.getElementById('mangd'),!this.checked)" checked="checked" />
</form>

J.N. skrev:

Vad skiljer din kod från min...

Ett lite annat sätta att tänka på bara. Jag skickar med 2 parametrar till funktionen. Dels vilket objekt som skall påverkas, dels ett värde (true/false) som styr ifall objeket skall påverkas på ena eller andra sättet.

J.N.Medlem sedan apr. 20031 660 inlägg
#7

HEJ!

Tack, fungerar utmärkt.

Okej jag förstår ditt tankesätt, när jag sätter mina egenskaper blir de 'hårdkodade', det är fel arbetssätt helt enkelt.

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