2016-10-08 2 views
-1

Ich mache eine Website und eine der Anforderungen ist es IE8 kompatibel zu sein. Ich habe ein einfaches Formular auf meiner Seite und benutze ein Optionsfeld Ich ändere, welche Feldgruppen des Formulars sichtbar sind. Grundsätzlich gebe ich dem Benutzer die Möglichkeit, entweder seinen Namen oder seine Nummer einzugeben. Ich verwende IE11 auf W10 im IE8-Kompatibilitätsmodus im F12-Menü und die Umschaltung funktioniert nicht. Es funktioniert überall sonst, auch in IE9 +. Weißt du, was könnte das Problem sein?Mein Javascript funktioniert nicht, wenn es in IE8 getestet wurde

Beide Radio-Buttons haben eine Onclick-Funktion, die ein Fieldset auf dem Display anzeigt: keines und das andere auf Display: Block. Die "header__form__fs_person" ist standardmäßig ausgeblendet.

html:

  <form class="header__form" name="form_name"> 
       <fieldset class="header__form__label_choices"> 
        <label class="header__form__label" for="person">Podle jména</label> 
        <input class="header__form__input_radio" type="radio" value="person_on" id="person" name="choice" onclick="hideIc(this)" checked> 

        <span class="header__form__divider">/</span> 

        <label class="header__form__label" for="ic">Podle IČ</label> 
        <input class="header__form__input_radio" type="radio" value="ic_on" id="ic" name="choice" onclick="hidePerson(this)"> 
       </fieldset> 

       <fieldset class="header__form__fs_person"> 
        <input class="header__form__input_text" type="text" id="name" placeholder="Jméno" required> 

        <input class="header__form__input_text" type="text" id="lastname" placeholder="Příjmení" required> 

        <input class="header__form__input_text" type="text" id="bday" placeholder="Narozen" onfocus="(this.type='date')" required> 
       </fieldset> 

       <fieldset class="header__form__fs_ic" disabled> 
        <input class="header__form__input_text" pattern=".{9,}" placeholder="123456789" required> 
       </fieldset> 

       <label class="header__form__terms" for="terms">Souhlasím s <a class="header__form__terms_a" href="">obchodnimi podmínkami</a></label> 
       <input class="header__form__input_checkbox" type="checkbox" id="terms" required> 

       <input class="header__form__input_btn" type="submit" value="Ověřit"> 
      </form> 

js:

<script> 
      function hideIc(radio_btn) { 
       if (radio_btn.checked) { 
        var ic = document.getElementsByClassName("header__form__fs_ic"); 
        var person = document.getElementsByClassName("header__form__fs_person"); 

        for (var i=0; i < ic.length; i++) { 
         ic[i].style.display = "none"; 
         ic[i].disabled = true; 

         person[i].style.display = "block"; 
         person[i].disabled = false; 

        } 

       } 
      } 

      function hidePerson(radio_btn) { 
       if (radio_btn.checked) { 

        var ic = document.getElementsByClassName("header__form__fs_ic"); 
        var person = document.getElementsByClassName("header__form__fs_person"); 

        for (var i=0; i < ic.length; i++) { 
         ic[i].style.display = "block"; 
         ic[i].disabled = false; 

         person[i].style.display = "none"; 
         person[i].disabled = true; 
        } 
       } 
      } 

     </script> 
+0

was specifally ist nicht funktioniert und welche Fehler werden geworfen? Beachten Sie, dass Muster und Platzhalter ohne Unterlegscheiben nicht unterstützt werden. – charlietfl

+0

Es gibt keine Fehler, es funktioniert einfach nicht. Wenn ich auf den Radiobutton klicke, passiert nichts, nichts verbirgt sich, nichts erscheint. Auch das Muster und die Platzhalter sind etwas, was ich nicht gesehen habe. Wie kann ich sie arbeiten lassen? – Arcane

Antwort

0

IE8 nicht getElementsByClassName() unterstützen.

Siehe hier: http://caniuse.com/#feat=getelementsbyclassname

Es gibt einen begehbaren um:

if(!document.getElementsByClassName) { 
    document.getElementsByClassName = function(className) { 
     return this.querySelectorAll("." + className); 
    }; 
    Element.prototype.getElementsByClassName = document.getElementsByClassName; 
} 

Die Antwort ist nicht von mir ... Ich kann es hier:
javascript document.getElementsByClassName compatibility with IE

+0

Ich habe Ihre Lösung gelesen und es versucht und während es auf allen Browsern funktionierte, funktionierte es immer noch nicht im IE8-Kompatibilitätsmodus. Ich habe die Funktion ausprobiert und ich habe versucht, alle 'getElementsByClassName' durch 'querySelectorAll' zu ersetzen und es hat immer noch nicht funktioniert. – Arcane

+0

Wenn Sie jQuery verwenden (Sie haben Ihre Frage damit markiert), können Sie einfach 'var person = $ (". Header__form__fs_person ") verwenden;' ... wäre einfacher. Weil, wie gesagt, diese Antwort nicht mir gehört ... Ich kann nicht erklären, warum es nicht für dich funktioniert. –

Verwandte Themen