11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

J'utilise un script qui me permet de transformer un champs texte en input et envoie ensuite la modification via httpRequest. Hors, je voudrais remettre un de ces champs en select, comment faire.

Voici le script utilisé

javascript :

//Fonction de modification inline de l'élément double-cliqué
function inlineMod(cpt, id, nomValeur, obj, type, table, idcol)
{
	// gestion des navigateurs (IE, MOZ, NS)
	nav = navigator.appName;
	if (nav == 'Microsoft Internet Explorer')
		nav ='ie';
		
	if(editionEnCours)
	{
		return false;
	}
	else
	{
		editionEnCours = true;
		sauve = false;
	}

	//Objet servant à l'édition de la valeur dans la page
	var input = null;
	var val = null; //conserve la valeur avant modif
	
	//Nom des boutons annuler et valider
	if(table == "tc01bis")
	{
		var annul = 'an['+ cpt +']';
		var valid = 'va['+ cpt +']';
	}
	else
	{
		var annul = 'ann['+ cpt +']';
		var valid = 'val['+ cpt +']';
	}
	var btnVal = document.getElementById("vali");
	var btnAnn = document.getElementById("annu");
	
	//Valeur de type texte ou nombre ou date
		input = document.createElement("input");
	//Assignation de la valeur
	if (obj.innerText)
	{
		input.value = obj.innerText;
		val = obj.innerText;
	}
	else
	{
		input.value = obj.textContent;
		val = obj.textContent;
	}
		
	input.value = trim(input.value);

	//On lui donne une taille un peu plus large que le texte à modifier
	input.style.width  = getTextWidth(input.value) + 30 + "px";

	//Remplacement du texte par notre objet input
	obj.replaceChild(input, obj.firstChild);

	//On donne le focus à l'input et on sélectionne le texte qu'il contient
	input.focus();
	input.select();


et dans html :

<td width="8%" class="modif" onDblClick="inlineMod(<?php echo $i ?>, '<?php echo $ann."-".$cod[$i] ?>', 'TypTaux', this, 'Select', 'tc02', 'AnneeCotisation-CodeCotisation')" >


Je suis débutante en javascript, et j'ai un peu de mal à recoller toutes les propriétés de l'objet select pour construire ma balise.

Merci de votre aide
Modifié par catcat (07 Apr 2009 - 06:30)
Bon, merci pour votre aide !!

j'ai trouvé ceci :

var	sel	= document.createElement('select');
		var tab = new Array('%','€');
		// Creation des options du select
		sel.name	=	'typ[]';
		for (var i=0; i<tab.length; i++) {
			var	opt		=	document.createElement('option');
			opt.value		=	tab[i];
			opt.text		=	tab[i];
			/*if(tab[i] == '\n '+val)
				opt.selected=true;*/
			sel.appendChild(opt);
		}
		//Remplacement du texte par notre objet input
		obj.replaceChild(sel, obj.firstChild);
		sel.focus;


Ca fonctionne impeccablement sous ff, mais ie ne me donne pas les valeurs de mes select, e j'ai donc 2 cases vides.

Quelqu'un a-t-il une idée ? Merci

[/i][/i][/i]
Salut :

testes ceci ::


for (var i=0; i<tab.length; i++) {
	sel.options[ i] = new Option(tab[ i], tab[ i]); // valut, Nom ... ou l'inverse, je sais plus !! [cligne]
}

normalement, ça fonctionne sous tous Navigateurs ...


Sans espace, naturellement Smiley cligne
@+
Modifié par Nours312 (07 Apr 2009 - 00:14)
j'ai fait ceci


for (var i=0; i<tab.length; i++) {
			var	opt	= new Option(tab[i], tab[i], false, true);
			sel.options[sel.options.length] = opt;
						sel.appendChild(opt);
		}

ET ça fonctionne.

merci
[/i][/i]