Avatar billede bmk1971 Juniormester
02. februar 2013 - 16:59 Der er 8 kommentarer og
1 løsning

Forms og array

Jeg har følgende program. Der er forskellige antal knapper alt afhængig af hvor mange knapper man har Add. Jeg har taend(this) funktion som kaldes med den ene knap og sluk funktion med den anden, og den skulle meget gerne referer til en unik knap i arrayet. Jeg skulle gerne kunne enable eller disable knapper alt afhængig af hvilken knap jeg trykker på. Hvordan referer jeg til trykte knap. Jeg kan godt gøre det når der ikke er tale om et array.


<script type="text/javascript">
var cont = document.getElementById('addhere');
var button = cont.getElementsByTagName('input');


{
button[0].disabled=true;

}

</script>


<form name="form1" method="post" action="" >
    <div id="addhere">
               
                        <input type="button" name="Taend[]" value="Tænd" OnClick = "return taend(this)"  >                     
             
                        <input type="button" name="Taend[]" value="Sluk" OnClick = "return sluk(this)"/>
               
        </div>
        <INPUT TYPE=BUTTON OnClick="add_field();" VALUE="Tilføj Kontakter">
        <INPUT TYPE=BUTTON OnClick="remove_field();" VALUE="Fjerne Kontakter">
     
</form>
Avatar billede januskh Nybegynder
02. februar 2013 - 18:44 #1
jQuery vil kunne hjælpe dig rigtigt meget i denne sag.

Først og fremmest. Når du tilføjer knapper, så giv dem et ID="knap1"-tag, så de er unikke.

Indsæt dette tag i <head>:
<script src="http://code.jquery.com/jquery-latest.js"></script>

Herefter kan du adressere hver enkelt knap:

$("#knap1").attr('disabled', 'true');
Avatar billede bmk1971 Juniormester
03. februar 2013 - 09:52 #2
Nu er det ikke at adresserer de enkelte knapper der er hovedproblemet. Det er og afgøre hvilken knap i arrayet der er blevet trykket på. Hvordan afgøre jeg det.
Avatar billede januskh Nybegynder
03. februar 2013 - 10:47 #3
Bare lige for at forstå det rigtigt. Dit array af knapper - er det dem, som ligger inde i <div id="addhere">? Og det er dem, som du vil tænde og slukke (toggle)? Er det med vilje at de skal pege på forskellige funktioner, når man klikker på dem?
Avatar billede januskh Nybegynder
03. februar 2013 - 11:18 #4
Jeg har lavet et hurtig eksempel på, hvad jeg tror du gerne vil lave:

Prøv lige at se den her demo, baseret på dit eksempel.
http://www.schepeler.dk/demo.htm
Avatar billede olebole Juniormester
03. februar 2013 - 13:52 #5
<ole>

Du kan godt bruge jQuery, men du kan også vælge at lære være og i stedet lære at kode JavaScript  *o)

Prøv at lægge et link til det, du har lavet. Så er det noget lettere at lave en god løsning  =)

/mvh
</bole>
Avatar billede bmk1971 Juniormester
03. februar 2013 - 18:02 #6
Tusind Tak for hjælpen. Jeg har fået det til at kører. Det som den skal gøre er at knapperne er parvis. Dvs enten er tænd disablet eller er sluk disablet. Nu sender jeg det hele over i PHP hvor resten af koden skal afvikles. (tænd og sluk for bla lamper)
Avatar billede olebole Juniormester
03. februar 2013 - 18:15 #7
Hvis det absolut skal være så ineffektiv kode som muligt - og du ikke har lyst til at lære JavaScript/DOM - så er det en udmærket løsning.

Du kunne dog også vælge en langt enklere og langt mere effektiv løsning:

var elmAct = null;
function toggleButton(e) {
    var elm = document.elementFromPoint(e.clientX, e.clientY);
    if (elm) {
        if (elmAct) elmAct.disabled = false;
        elmAct = elm;
        elmAct.disabled = true;
    }
}
</script>

<form name="form1" method="post" action="" >
        <div id="addhere" onclick="toggleButton(event)">
          <input type="button" class="toggle-button" name="Taend[]" value="Tænd">                     
          <input type="button" class="toggle-button" name="Taend[]" value="Sluk">
        </div>
        <INPUT TYPE=BUTTON OnClick="add_field();" VALUE="Tilføj Kontakter">
        <INPUT TYPE=BUTTON OnClick="remove_field();" VALUE="Fjerne Kontakter">
</form>

Så tilgår du det ønskede element direkte og slipper for at bladre rundt i et hav af elementer  *o)
Avatar billede olebole Juniormester
03. februar 2013 - 18:17 #8
Hov ... jeg glemte SCRIPT-begyndelses-tagget. Det kan du nok selv sætte ind  =)
Avatar billede olebole Juniormester
03. februar 2013 - 18:21 #9
- og så bør du nok diskriminere på elementtypen. Med føromtalte SCRIPT tag ser det sådan ud:

<script type="text/javascript">
var elmAct = null;
function toggleButton(e) {
    var elm = document.elementFromPoint(e.clientX, e.clientY);
    if (elm && elm.type==="button") {
        if (elmAct) elmAct.disabled = false;
        elmAct = elm;
        elmAct.disabled = true;
    }
}
</script>

<form name="form1" method="post" action="" >
        <div id="addhere" onclick="toggleButton(event)">
          <input type="button" class="toggle-button" name="Taend[]" value="Tænd">                     
          <input type="button" class="toggle-button" name="Taend[]" value="Sluk">
        </div>
        <INPUT TYPE=BUTTON OnClick="add_field();" VALUE="Tilføj Kontakter">
        <INPUT TYPE=BUTTON OnClick="remove_field();" VALUE="Fjerne Kontakter">
</form>
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