Avatar billede discotk Nybegynder
10. juni 2009 - 14:34 Der er 8 kommentarer og
1 løsning

Knapper aktiveres ved valg af Flueben/checkbox?

Jeg skal have nogle knapper til at være aktive når et flueben markeres, som jeg allerede har fået til at virke fint nok. Men når jeg har to flueben markeret på samme tid skal nogle af knapperne være inaktive, hvilket ikke helt virker for mig.

Det virker heller ikke hvis jeg bruger den samme funktion på flere flueben, så sker der enten en fejl og eller virker det bare ikke. Nogen der kan hjælpe?

Her er koden:

<script type="text/javascript">
function addLoadEvent(func) {
    var oldonload = window.onload;
    if (typeof window.onload != 'function') {
        window.onload = func;
    } else {
        window.onload = function() {
            if (oldonload) {
                oldonload();
            }
            func();
        }
    }
}

addLoadEvent(function() {
    document.theForm.buttonDelete.disabled=true;
})
addLoadEvent(function() {
    document.theForm.buttonSendSMS.disabled=true;
})
addLoadEvent(function() {
    document.theForm.buttonSendMessage.disabled=true;
})
addLoadEvent(function() {
    document.theForm.buttonEdit.disabled=true;
})
addLoadEvent(function() {
    document.body.appendChild(document.createTextNode('Onload funktion virker'));;
})

function theChecker()
{
if(document.theForm.theCheck.checked==false)
{
document.theForm.buttonDelete.disabled=true;
document.theForm.buttonSendSMS.disabled=true;
document.theForm.buttonSendMessage.disabled=true;
document.theForm.buttonEdit.disabled=true;
}
else
{
document.theForm.buttonDelete.disabled=false;
document.theForm.buttonSendSMS.disabled=false;
document.theForm.buttonSendMessage.disabled=false;
document.theForm.buttonEdit.disabled=false;
}
}
</script>


Flueben:

<input type="checkbox" name="theCheck" onclick="theChecker()" value="">


Knapperne:

<input type="submit" value="Søg" name="ButtonSearch" id="Søg" class="button"/><input type="submit" value="Rediger" name="buttonEdit" id="Videresend0" class="button"/><input type="submit" value="Send besked" name="buttonSendMessage" id="Videresend" class="button"/><input type="submit" value="Send SMS" name="buttonSendSMS" id="Besvar" class="button"/><input type="submit" value="Slet" name="buttonDelete" id="Slet" class="button"/>


Skriv endelig hvis i mangler noget!
Tak på forhånd
Avatar billede roenving Novice
10. juni 2009 - 15:55 #1
Har du andre onload-events, for ellers vil det være en del nemmere bare at sætte  tingene direkte ind, og i hvert fald behøver du kun lave een blok, hvis du har andre:

addLoadEvent(function() {
    var f = document.theForm;
    f.buttonDelete.disabled=true;
    f.buttonSendSMS.disabled=true;
    f.buttonSendMessage.disabled=true;
    f.buttonEdit.disabled=true;
})

-- men jeg gætter på, at du bare skal bruge:

window.onload = function() {
    var f = document.theForm;
    f.buttonDelete.disabled=true;
    f.buttonSendSMS.disabled=true;
    f.buttonSendMessage.disabled=true;
    f.buttonEdit.disabled=true;
}

-- og du kan eksempelvis:

function theChecker(f){
  var chk1 = f.theCheck.checked;
  var chk2 = f.theCheck2.checked;
    f.buttonDelete.disabled=!chk1;
    f.buttonSendSMS.disabled=chk1||chk2;
    f.buttonSendMessage.disabled=!(chk1||chk2);
    f.buttonEdit.disabled=!chk1;
}

<input type="checkbox" name="theCheck" onclick="theChecker(this.form)" value="">
<input type="checkbox" name="theCheck2" onclick="theChecker(this.form)" value="">
Avatar billede discotk Nybegynder
10. juni 2009 - 16:09 #2
Mange tak skal du ha, lige hvad jeg havde brug for! smid et svar så får du point
Avatar billede discotk Nybegynder
10. juni 2009 - 16:20 #3
Hov skal faktisk lige høre om noget først... hvad nu hvis jeg har en liste der bliver opdateret jævnligt, f.eks via PHP. Hvordan får jeg det til at virke på alle fluebenene?

F.eks hvis jeg har

<input type="checkbox" name="theCheck" onclick="theChecker(this.form)" value="">
<input type="checkbox" name="theCheck2" onclick="theChecker(this.form)" value="">
<input type="checkbox" name="theCheck3" onclick="theChecker(this.form)" value="">
<input type="checkbox" name="theCheck4" onclick="theChecker(this.form)" value="">

Kan man ikke lave én funktion der virker uden at skulle lave 'name="theCheckX"' om hele tiden?
Avatar billede roenving Novice
10. juni 2009 - 17:06 #4
Checkbokse med samme navn vil blive opfattet som et array, så f.eks.

var chks = f.theCheck;
...
    f.buttonSendSMS.disabled=chks[1].checked||chks[2].checked;
...

-- els velbekomme '-)
Avatar billede discotk Nybegynder
10. juni 2009 - 17:39 #5
Browseren laver fejl og siger at den ikke kan deffinere "1.checked"

Jeg er desværre ikke helt med? - da jeg er elendig til javascript :)

måske kunne du give et eksempel som du startede med?

Desuden hvis du kan hjælpe mig med at få "button.Delete" til kun at være aktive når et flueben er markeret, den må ikke være aktiv hvis to eller flere er markeret.
Avatar billede roenving Novice
11. juni 2009 - 11:46 #6
Det er vel et bestemt flueben, der skal være sat ?-)

-- så tester du 'positivt' for det og 'negativt' for de andre (men da resultatet skal være omvendt, fordi det er disabled, der sættes skal vi vende det -- faktisk to gange !-), f.eks.

f.buttonDelete.disabled = !chks[3].checked || chks[1].checked || chks[2].checked || chks[4].checked;

-- dine checkboxe skal så se således ud:

<input type="checkbox" name="theCheck" onclick="theChecker(this.form)" value="">
<input type="checkbox" name="theCheck" onclick="theChecker(this.form)" value="">
<input type="checkbox" name="theCheck" onclick="theChecker(this.form)" value="">
<input type="checkbox" name="theCheck" onclick="theChecker(this.form)" value="">

-- hvis du så skal aflæse dem med f.eks. php på serveren, skal de hedde theCheck[] allesammen, og du henter værdien til javascript med:

var chks = f.elements["theCheck[]"];
Avatar billede discotk Nybegynder
11. juni 2009 - 22:35 #7
Nej.... det skal bare være hvis flere end 2 flueben bliver markeret, så skal én bestemt knap ikke være tilgængelig...

Jeg har 4 knapper, hvor de tre første knapper skal være aktive når et eller flere flueben er markeret, og den sidste knap skal være inaktiv når flere end et flueben er markeret.


... Men så skal jeg vel stadig indtaste et bestemt antal i javascriptet.

så hvis jeg har f.eks 10 checkboxes, så skal det hedde:
f.buttonDelete.disabled = !chks[3].checked || chks[1].checked || chks[2].checked || chks[4].checked || chks[6].checked || chks[6].checked || chks[7].checked || chks[8].checked || chks[9].checked || chks[10].checked;

... det vil jeg gerne væk fra, for hvis jeg har 100 :) så bliver det hurtigt uoverskueligt.
Avatar billede discotk Nybegynder
12. juni 2009 - 20:28 #8
Fandt en anden løsning... Men det er dine points. Tak for hjælpen.
Avatar billede roenving Novice
13. juni 2009 - 13:19 #9
-- og tak for point ,~}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester