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

jQuery Discussion :

Changer attribut champs dynamique


Sujet :

jQuery

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2019
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2019
    Messages : 20
    Points : 23
    Points
    23
    Par défaut Changer attribut champs dynamique
    bonjour à tous
    Je demande votre aide.

    Je crée dynamiquement des champs et je souhaiterai changer l'attribut de certains champs en fonction du choix de la selectbox.
    Par exemple si je sélectionne opt2 je souhaiterai que field 1 et field 2 soient disabled et si je choisi opt1 que field1 et field2 reste actif.
    Nom : Sans tddditre.png
Affichages : 108
Taille : 1,6 Ko
    J'aimerai que les changements se fassent uniquement sur la ligne concernée et non sur toutes les lignes. A vrai dire j'etai arrivé à le faire mais le changement se faisait sur toutes les lignes, ce qui ne m'arrange pas.

    Mon code
    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
    <!DOCTYPE html>
    <html lang="en">
    <head>
      <title>test</title>
      <meta charset="utf-8">
      <meta name="viewport" content="width=device-width, initial-scale=1">
      <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css">
      <link rel="stylesheet" href="style.css">
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
      <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js"></script>
    </head>
    <body>
     
    	<nav class="navbar navbar-expand-sm navbar-custom">	  
    	  <div class="navbar-collapse collapse" id="navbarCustom">
    		  <ul class="navbar-nav">
    			<li class="nav-item">
    				<a class="nav-link" href="#">onglet1</a>
    			</li>
    			<li class="nav-item dropdown">
    			  <a class="nav-link" href="#" id="navbardrop" data-toggle="dropdown">onglet2</a>
    			  </a>
    			  <div class="dropdown-menu">
    				<a class="dropdown-item" href="#">link1</a>
    				<a class="dropdown-item" href="#">link2</a>
    				<a class="dropdown-item" href="#">link3</a>
    			  </div>
    			</li>
    		  </ul>
     
    		</div>
    	</nav>
     
    	<div class="container">
    		<div class="form-group">
    			<form name="azer" id="azer">
    				<div class="table-responsive">
    					<table class="table table-condensed" id="dynamic_field">
     
    					</table>
    				</div>
    			</form>
    		</div>	
    	</div>
    </body>
    </html>

    mon javascript
    Code : 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
    <script type="text/javascript" language="javascript">
     
    	$(document).ready(function(){
     
    		var i=1;
    		$('#dynamic_field > tr').remove();
    		$('#dynamic_field').append('<tr><td style="width: 17%"><select type="text" name="field1[]" class="form-control" placeholder="Type controle" required ><option value="opt1">opt1</option><option value="opt2">opt2</option></select></td><td style="width: 14%"><input type="text" name="field2[]" class="form-control" placeholder="field2" required /></td><td style="width: 16%"><input type="text" name="field3[]" class="form-control" placeholder="field3" required /></td><td><button type="button" name="plus" id="plus" class="btn btn-primary btn_plus" ></i></button></td></tr>');			
     
    		$(document).on('click', '.btn_plus', function(){
    			i++;
    			$('#dynamic_field').append('<tr id="row'+i+'"><td style="width: 17%"><select type="text" name="field1[]" class="form-control" placeholder="Type controle" required ><option value="opt1">opt1</option><option value="opt2">opt2</option></select></td><td style="width: 14%"><input type="text" name="field2[]" class="form-control" placeholder="field2" required /></td><td style="width: 16%"><input type="text" name="field3[]" class="form-control" placeholder="field3" required /></td><td><button type="button" name="remove" id="'+i+'" class="btn btn-danger btn_remove" ></i></button></td></tr>');
    		});
     
    		$(document).on('click', '.btn_remove', function(){
    			var button_id = $(this).attr("id"); 
    			$('#row'+button_id+'').remove();
    		});	
     
    	});
     
     
    </script>
    Besoin d'aide

    Merci d'avance

    Cordialement

  2. #2
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 873
    Points : 3 717
    Points
    3 717
    Par défaut
    Salut,

    Citation Envoyé par novice77H Voir le message

    Je crée dynamiquement des champs et je souhaiterai changer l'attribut de certains champs en fonction du choix de la selectbox.
    Par exemple si je sélectionne opt2 je souhaiterai que field 1 et field 2 soient disabled et si je choisi opt1 que field1 et field2 reste actif.
    Nom : Sans tddditre.png
Affichages : 108
Taille : 1,6 Ko
    J'aimerai que les changements se fassent uniquement sur la ligne concernée et non sur toutes les lignes. A vrai dire j'etai arrivé à le faire mais le changement se faisait sur toutes les lignes, ce qui ne m'arrange pas.
    Vous voulez cela pour toutes les lignes ? C'est-à-dire le select de chaque ligne met field 1 et field 2 de la même ligne (mais pas les field 1 et field 2 des autres lignes) en disabled, c'est bien ça ?

  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2019
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2019
    Messages : 20
    Points : 23
    Points
    23
    Par défaut
    Oui Beginner. c'est exactement ça. Les changements se font uniquement sur la ligne et n'impacte pas les autres.

    Merci de prendre le temps de regarder.

  4. #4
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 873
    Points : 3 717
    Points
    3 717
    Par défaut
    Je ne connais pas vraiment jQuery mais j'ai quand même essayé de le faire le plus possible en jQuery, le code que j'ai testé ici : https://jsbin.com/hemawesuyu/edit?js,output fonctionne bien...

    J'ai ajouté cette fonction :

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    $("#dynamic_field").on('change', function (e) {
     
            if (e.target.tagName.toLowerCase() != "select") return;
     
            var valueSelected = e.target.value;
            var row_target = e.target.parentElement.parentElement;
     
            if (valueSelected == "opt1") {
                $("input", row_target).removeAttr('disabled');
            }
            else {
                $("input", row_target).attr('disabled', 'disabled');
            }
     
        });

    J'ai utilisé le principe de la délégation (un seul gestionnaire d'évènement pour tous les select de la table)...

  5. #5
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2019
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2019
    Messages : 20
    Points : 23
    Points
    23
    Par défaut


    Grand merci pour votre aide. Ca marche excatement comme je veux.


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Changer l'attribut style dynamiquement
    Par malgache dans le forum Android
    Réponses: 2
    Dernier message: 05/08/2011, 14h09
  2. changer la valeur de l'attribut "href" dynamiquement
    Par ears-of-wheat dans le forum ASP.NET
    Réponses: 5
    Dernier message: 05/04/2011, 14h40
  3. Réponses: 0
    Dernier message: 01/07/2008, 11h00
  4. [struts] probleme champs dynamiques
    Par rocco dans le forum Struts 1
    Réponses: 28
    Dernier message: 07/06/2004, 21h26
  5. ajouter un champ dynamiquement à une instance de table
    Par maniack dans le forum Bases de données
    Réponses: 2
    Dernier message: 28/02/2004, 23h58

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