IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Bouton radio avec document.forms.submit


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Homme Profil pro
    Etudiant
    Inscrit en
    Février 2013
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 23
    Points : 20
    Points
    20
    Par défaut Bouton radio avec document.forms.submit
    Bonjour à tous,

    J'ai un problème avec mon bouton radio qui ne switch plus quand je sélectionne un autre bouton radio, le bouton radio ne se change pas à l'affichage et reste sur celui cocher par défaut, je voudrais pouvoir changer de bouton radio quand je sélectionne un bouton radio non coché et que celui-ci soit envoyé en paramètre dans l'url. Connaissez-vous une solution en javaScript s'il vous plaît ?

    Merci d'avance pour votre aide !

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <FORM name=form_naissanceACTION='<?php echo $PHP_SELF ?>?choix_naissance=$choix_naissance' method='GET'>
     
    <?php 
     
     
    for ($i=1;$i<=$nb_soc;$i++) { 
    ?>
    <input type="radio" id="id_naissance" name="choix_naissance" value="<?php echo $les_naissance[$i]?>" <?php if ($choix_naissance== $les_naissance[$i]) {echo "checked";} ?> 
    onClick="document.forms['form_naissance].submit();"> <?php echo $noms_naissance[$i]?><br>
    <?php 
    } 
    ?>
     
    </form>

  2. #2
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    Il y a beaucoup de choses à dire sur ce code.

    • Ce n'est pas du JS. Pour le forum JS, il faut donner le code source de la page web.
    • Un ID doit être unique dans la page web <input type="radio" id="id_naissance" ....
    • onClick="document.forms['form_naissance].submit();" fait ce qui est demandé, donc la page est rafraîchie et vous ne voyez jamais le changement.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Etudiant
    Inscrit en
    Février 2013
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 23
    Points : 20
    Points
    20
    Par défaut
    Je suis désolé je pensais être sur le bon forum vu que c'est la fonction "document.forms.submit" qui me pose problème. Connaissez-vous un moyen d'utiliser cette fonction sans rafraichir la page ou en bloquant le rafraichissement de page lors de la soumission ? J'ai besoin que la valeur du vouton radio choisi soit envoyé en url c'est pour ça que j'ai utilisé cette fonction à la base.

  4. #4
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    Il faut intercepter l'événement "submit" et prendre la valeur des éléments du formulaire au moment de la transaction AJAX.

    Il y a beaucoup d'exemples de transactions AJAX dans le forum jQuery, ce qui implique l'utilisation de jQuery.

    Il y en a certainement dans ce forum, mais la méthode ancienne était assez pénible et je ne l'ai jamais utilisée.

    Ci-dessous un exemple utilisant ma méthode (nécessite Chrome, Firefox ou Edge) :

    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    <!DOCTYPE html>
    <html lang="fr" dir="ltr">
    <head>
      <meta http-equiv="cache-control" content="public, max-age=60">
      <meta charset="utf-8">
      <meta name="viewport" content="width=device-width, initial-scale=1">
      <meta name="author" content="Daniel Hagnoul">
      <title>Test</title>
      <style>
     
      </style>
      <script>
        'use strict';
     
        document.addEventListener( 'DOMContentLoaded', ev => {
          
       });
        
        window.addEventListener( 'load', ev => {
          
          const kProcessStatus = r => {
            // thenable, pour fetch()
            if ( r.status === 200 || r.status === 0 ){
              return Promise.resolve( r );
            } else {
              return Promise.reject( new Error( r.statusText ) );
            }
          };
          
          document.querySelector( "[name='form_naissance']" ).addEventListener( "submit", ev => {
            ev.preventDefault();
            ev.stopPropagation();
            
            // debug, touche F12
            //console.log( document.querySelector( "[name='choix_naissance']:checked" ).value );
            
            // fetch, voir mon billet :
            // http://www.developpez.net/forums/blogs/285162-danielhagnoul/b1066/fetch-tient-promesses-decouverte-premiers-essais/
            
            fetch( 'test3.php', {
              'method' : 'post',
              'body' : new FormData( ev.target )
            })
            .then( r => kProcessStatus( r ) )
            .then( r => r.text() )
            .then( text => console.log( text ) )
            .catch( er => console.log( er ) );
            
          }, false );
          
        });
      </script>
    </head>
    <body>
      <main>
     
        <form name="form_naissance">
          <input type="radio" name="choix_naissance" value="1" checked> Naissance 1<br>
          <input type="radio" name="choix_naissance" value="2"> Naissance 2<br>
          <input type="radio" name="choix_naissance" value="3"> Naissance 3<br>
          <input type="submit">
        </form>
     
      </main>
    </body>
    </html>

    Fichier d'essai "test3.php"

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    <?php
    header( 'Access-Control-Allow-Origin : *' );
    header( 'Content-Type: text/html; charset=utf-8' );
     
    function test_input( $data ){
      $data = trim( $data );
      $data = stripslashes( $data );
      $data = htmlspecialchars( $data );
      return $data;
    }
     
    $inputValue = '';
     
    if ( $_SERVER[ 'REQUEST_METHOD' ] == 'POST' ){
      $inputValue = test_input( $_POST[ "choix_naissance" ] );
    }
     
    if ( !preg_match( '/^[\w\'\€\% ]*$/u', $inputValue )) {
      $inputValue = "Échec, caractères interdits !"; 
    }
     
    echo $inputValue;
    ?>

Discussions similaires

  1. Problème avec document.forms
    Par Kernald dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 25/02/2007, 12h15
  2. Réponses: 1
    Dernier message: 29/09/2006, 12h00
  3. Comment sysnchronier 2 document.form.submit
    Par marti dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 07/07/2006, 10h24
  4. Réponses: 5
    Dernier message: 29/05/2006, 14h27
  5. probleme bouton radio avec onChange dans formulaire
    Par wil4linux dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 14/09/2005, 11h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo