2017-09-19 2 views
0

J'ai un bouton radio sur ma page HTML:valeur bouton radio non accessible à IE11

<form name="myForm" onsubmit="calc_risk(); return false;" method="post"> 
    <input type="radio" name="q1" value="1"> Yes 
    <input type="radio" name="q1" value="0"> No 
    <input type="submit" value="Submit"> 
</form> 

Dans ma fonction javascript je peux accéder à la valeur via:

function calc_risk() { 
    var a = document.forms["myForm"]["q1"].value; 
} 

dans FireFox cette variable contient 1 ou 0 comme prévu (selon le bouton radio que j'ai sélectionné). Dans IE11, la valeur est indéfinie. Pourquoi le bouton radio ne fonctionne pas dans IE11?

EDIT

J'utilise jquery maintenant pour accéder à la valeur:

var radioValue = $("input[name='q1']:checked").val(); 

fonctionne dans les deux navigateurs. Assurez-vous que jquery est inclus dans la section d'en-tête en ajoutant:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
+0

pouvez-vous faire un extrait? –

+0

Voir https://stackoverflow.com/a/37864049/1169519 – Teemu

+0

est donc microsoft juste stupide et devrais-je éviter le support IE? – user3182532

Répondre

0

La possibilité d'accéder à une propriété value sur une HTMLFormControlsCollection et obtenir la valeur de la première vérification bouton radio à l'intérieur est un élément relativement nouveau dans le web spécifications de l'API. Internet Explorer (étant un ancien navigateur qui n'obtient aucun nouveau travail de développement au-delà des correctifs de sécurité) ne le supporte pas.

Vous pouvez effectuer une boucle sur la collection et tester le premier élément coché à la place.

var a = get_first_checked_value(document.forms["myForm"]["q1"]); 

function get_first_checked_value(form_controls) { 
    for (var i = 0; i < form_controls.length; i++) { 
     if (form_controls[i].checked) { 
      return form_controls[i].value; 
     } 
    } 
} 
-1

Voici ma solution et testé dans IE 11 et navigateur Chrome.

<html> 
    <body> 
     <form name="myForm" onsubmit="calc_risk(this); return false;" method="post"> 
      <input type="radio" name="q1" value="1"> Yes 
      <input type="radio" name="q1" value="0"> No 
      <input type="submit" value="Submit"> 
     </form> 
     <script language="javascript"> 
      function calc_risk (theForm) 
      { 
       var q1Values = theForm.q1; 
       for (i=0 ;i<q1Values.length;i++) 
       { 
        if(q1Values[i].checked) 
        { 
         alert(q1Values[i].value); 
        } 
       } 
      } 
     </script> 
    </body> 
</html>