11521 sujets

JavaScript, DOM et API Web HTML5

Bonjour j'ai un soucis.

disons que j'ai une balise div dans laquelle se trouve des elements.


<div id="momo">
 <input id="monIp" name="alu">  <select id="sel1"><option>opt1</option><option>opt1</option></select>
</div>


si je fais ainsi dans le jquery.


var maVariable=$("#momo").clone();


comment pourrais-je proceder pour modifier l'attribut name de #monIP qui vient d'être créer par clonage?
Merci d'avance.
Bonjour,

A vrai dire, avant même de m'attaquer au javascript je n'arrive pas à comprendre le html : le select il n'a pas d'attribut name ? Et pour le javascript il n'y aura pas que les name à modifier mais toutes les ID aussi... Le code doit-il être réitérable plusieurs fois ou une seule fois ?

Autant de questions à se poser avant de se lancer dans le javascript...
J'oubliais, quelques pistes :
.find( 'input' ).removeAttr( 'name' ).attr( 'name', 'newAttr' )

Mais vu qu'il faut que le javascript s'adapte exactement au html pour les attributs, autant produire le html via js avec des variables dédiées aux attributs et qui s'incrémenteront à chaque itération.

Exemple : CodePen
merci, c'est bien le .find() qu'il me fallait.
mais j'ai un autre soucis


function duplique()
{
	$(function()
	{
	    //incerentation du numero de l'id pour le nouvel element
	    var numero=parseInt($('#actuelle').val());
	    numero+=1;
	    $('#actuelle').attr('value',numero)
	    //duplication de zone 
	    var nouveau=$('.zoneMedicament').clone();//.insertBefore($('#molo'));
	    	//changement de l'attribut id de la nouvelle zone
	    	nouveau.attr('class',"ici"+numero);
	    	nouveau.find("#nom").attr("name","nom"+numero);
	    	nouveau.find("#nom").attr("id","nom"+numero);
	    //remise à zero du premier formuaire
               //ça ça marche
	    $('.zoneMedicament').find(':input').not(':button, :submit, :reset, :hidden') .val('')
			.prop('checked', false)
			.prop('selected', false);
                 //aucune de ces 5 methodes marche
		$('.zoneMedicament').find('.selectpicker option[selected]').removeAttr('selected');
		$('.zoneMedicament').find('.selectpicker').val(" ");
		$('.zoneMedicament').find('.selectpicker').attr('selectedIndex','-1');
		$('.zoneMedicament').find('.selectpicker').val($(this).find('option:first').val());
		$('.zoneMedicament').find('select').val([]);
		//insertion de la nouvelle zone
    	nouveau.insertAfter($('.zoneMedicament'));
    	//alert("nom"+numero)
	    //$('#zoneMedicament:first').wrap('<a></a>');

	});
}


Ce que je voudrais c'est que quand je duplique une zone, le clone garde les valeurs (ça ça marche), mais je voudrais que "l'original" se réinitialise afin que l'utilisateur voit ce qu'il vient d'insérer et la nouvelle zone à insérer. Merci d'avance.