Avatar billede nc85 Nybegynder
30. maj 2008 - 12:42 Der er 4 kommentarer

Hvorfor disabler den ikke mine felter?

Har 2 radiobuttons på siden her - En der hedder Fravær, og en der hedder Link...

Hvis man har valgt fravær, skal tekst felterne "besked" og "url" blive disabled, og hvis man vælger fravær, så skal dropdown menuen blive disabled - Men kan bare ikke få det til at spille - What am i doing wrong???

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" encoding="UTF-8" />

  <xsl:template match="/ShortMessageModule">
  <link type="text/css" rel="StyleSheet" href="/files/design/elements/css/datepicker.css" />
    <script type="text/javascript" src="/files/design/elements/js/datepicker2.js"><xsl:text> </xsl:text></script>
    <script type="text/javascript" language="javascript">
        function changestate(obj){
            if(document.getElementById("fravaer").selected){
                document.getElementById("fravaerdropdown").enabled == "true";
                document.getElementById("link").disabled == "true";
                document.getElementById("besked").disabled == "true";
                document.getElementById("url").disabled == "true";
            } else {
                document.getElementById("fravaerdropdown").disabled = "true";
                document.getElementById("link").disabled == "false";
                document.getElementById("besked").disabled == "false";
                document.getElementById("url").disabled == "false";
            }
           
            if(document.getElementById("link").selected){
                document.getElementById("fravaerdropdown").disabled = "true";
                document.getElementById("link").disabled == "false";
                document.getElementById("besked").disabled == "false";
                document.getElementById("url").disabled == "false";
            } else {
                document.getElementById("fravaerdropdown").disabled == "true";
                document.getElementById("fravaer").disabled == "false";
            }
           
        }
    </script>
    <h1>Opret indlæg</h1>
    <p>Her kan du informere andre fra....</p>
    <form name="MessageForm" action="" method="post">
        <p>
        <input checked="checked" id="fravaer" type="radio" name="{MessageType}" value="0" onclick="changestate(1)">Fravær</input><br />
        <select id="fravaerdropdown" name="{TypeDropDown}">
            <option value="-1">Vælg...</option>
            <option>Jeg arbejder hjemme</option>
            <option>Jeg har barn syg</option>
            <option>Jeg holder fri</option>
            <option>Jeg er syg</option>
            <option>Jeg er på kursus/til temadag</option>
        </select>
        </p>
        <p>
        <input type="radio" id="link" name="{MessageType}" value="1"  onclick="changestate(1)" >Link</input><br />
        Besked: <br /><input type="text" id="besked" name="{UrlText}" /><br />
        Url: <br /><input type="text" id="url" name="{Url}" />
        </p>
        <p>
            <input type="text" name="PrettyStartDate" disabled="disabled" value="{PrettyStartDate}"></input><input type="button" value="Vælg..."  onmouseup="fncDateOpen('dDate01')" />
            <input type="hidden" name="StartDate" value="{StartDate}" />
            <xsl:text disable-output-escaping="yes"><![CDATA[
                                <div id="dDate01" style="display:none;position:absolute;"></div>
                                <SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
                                    var theForm=document.forms['newsForm'];
                                    var oDate01=document.getElementById('dDate01');
                                    var date01 = new Date(document.forms['MessageForm'].StartDate.value);
                                    var dp1 = new DatePicker(date01);
                                    var el = dp1.create();
                                    oDate01.appendChild( el );
                                    fncInitiatePicker(dp1,document.forms['MessageForm'].StartDate, document.forms['MessageForm'].PrettyStartDate,0)
                                </SCRIPT>
                            ]]></xsl:text>
            <br />
            <input type="text" name="PrettyEndDate" disabled="disabled" value="{PrettyEndDate}"></input><input type="button" value="Vælg..."  onmouseup="fncDateOpen('dDate02')"/>
            <input type="hidden" name="EndDate" value="{EndDate}" />
            <xsl:text disable-output-escaping="yes"><![CDATA[
                            <div id="dDate02" style="display:none;position:absolute;"></div>
                            <SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
                            var oDate02=document.getElementById('dDate02');
                            var date02 = new Date(document.forms['MessageForm'].EndDate.value);
                            var dp2 = new DatePicker(date02);
                            var e2 = dp2.create();
                            oDate02.appendChild( e2 );
                            fncInitiatePicker(dp2,document.forms['MessageForm'].EndDate, document.forms['MessageForm'].PrettyEndDate,1)
                            </SCRIPT>
                        ]]></xsl:text>
        </p>       
       
        <input type="submit" name="{BtnSubmitForm}" value="Ok" />
    </form>
  </xsl:template>

</xsl:stylesheet>
Avatar billede erikjacobsen Ekspert
30. maj 2008 - 14:14 #1
Du skal kun bruge eet "=" i en tilordning:  document.getElementById("link").disabled == "true";
Avatar billede o-zone Nybegynder
30. maj 2008 - 14:31 #2
hmmm ... godt set Erik :)
jeg så det jo ikke lige straks, så jeg har i mellemtiden pyntet din metode lidt op, så du istedet kan bruge:
        function changestate(obj){
            if (obj.id == "fravaer") {
                document.getElementById("fravaerdropdown").disabled = false;
              document.getElementById("besked").disabled = true;
              document.getElementById("url").disabled = true;
            } else {
              document.getElementById("fravaerdropdown").disabled = true;
              document.getElementById("besked").disabled = false;
              document.getElementById("url").disabled = false;
            }
        }


Så kan du i begge dine radios kalde metoden med:
onclick="changestate(this); return true;"
Avatar billede olebole Juniormester
31. maj 2008 - 20:05 #3
<ole>

Hvis udtryk som:
    document.getElementById("link").selected

- og:
    document.getElementById("fravaerdropdown").disabled

- og:
    document.forms['MessageForm'].EndDate

- virker, skyldes det udelukkende browserfejl. Den slags HTML-DOM er ikke valid og giver absolut ingen mening under X(HT)ML. Til gengæld findes der ikke idag metoder, der virker  :o|

Personligt ville jeg vente med at scripte DOM i XML/XHTML, til teknologierne er understøttet på WWW  =)

/mvh
</bole>
Avatar billede olebole Juniormester
31. maj 2008 - 20:06 #4
- og der burde nok stå:
    "Personligt ville jeg vente med at scripte DOM i XML/XHTML, til teknologierne er understøttet på WWW ... i hvertfald når det gælder forms"
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