par
agité » 31 déc. 2007, 15:23
Bonjour,
Vérifie que les guillemets simples en soi-réellement (= créées avec la touche 4 du clavier alphanumérique)
merci j'ai bien remplacé les caracteres par des simple quote ce qui donne :
Code : Tout sélectionner
/**
* Transforme un tableau multi-lignes en un tableau mono-ligne mais auto-extensible
* Renomme également les noms de champ en suivant un masque paramétrable ; par défaut article[]
*
* @usage articlesMultiRows([{css_id: ?, css_row_class: ?, check_inputs: ?}])
* @param {Object} params Objet contenant (ou pas) les paramètres de contrôle de la classe
*/
function articlesMultiRows(params)
{
this.row_number = 0;
/*
* Extension des paramètres par défaut
*/
var params = params || {};
params.css_id = params.css_id || ajout_multi_articles;
params.css_row_class = params.css_row_class || article;
params.check_inputs = params.check_inputs || input,select,textarea;
/**
* Initialise le tableau de données et accroche les méthodes dynamiques
*/
this.init = function(){
//aucun ID détecté, pas la peine de continuer plus loin
if (!$(params.css_id))
{
return false;
}
//on récupère les lignes, on enlève la première du tableau et on supprime les autres
var rows = $(params.css_id).getElements('tr'+params.css_row_class);
var row_first = rows.shift();
rows.removeElements();
rows = null;
/*
* On assigne lévènement aux champs paramétrés de la ligne
* On place le focus sur le premier champ
*/
$ES(params.check_inputs, row_first).addEvent(blur, rowCheck);
$(row_first).getElement(input).focus();
row_number = 1;
/*
* On écrit un petit message sympathique indiquant le fonctionnement du bazar
* On le fait via JavaScript car un utilisateur sans JS ne pourrait justement pas suivre les infos
* Il est placé juste avant le tableau
*/
new Element('p',{
class : message
}).setHTML("Dès quun code article et une quantité sont saisis ci-dessous, <strong>une nouvelle ligne sajoute automatiquement</strong>.<br />Afin daccélérer votre saisie, <em>utilisez la touche de tabulation de votre clavier</em> pour passer dun champ à lautre. Vous verrez, cest facile et surtout efficace !").injectBefore(params.css_id);
};
/**
* Vérifie si la ligne a entièrement été complétée et le cas échéant, déclenche lajout de ligne
*/
this.rowCheck = function(){
var row = { inputs : 0, completed : 0, dom : $(this).getParent().getParent() };
$ES(params.check_inputs, row.dom).each(function(input){
//Un élément de plus …
++row.inputs;
//… dont on vérifie sil est bien complété
switch (input.getTag())
{
case input:
case textarea:
if (input.value.clean())
{
++row.completed;
}
break;
case select:
if (input.selectedIndex >= 0 && input.selectedIndex < input.length)
{
++row.completed;
}
break;
}
});
/*
* Pour insérer une nouvelle ligne, on doit avoir :
* - autant de champs complétés que de champs existants
* - aucun élément suivant
*/
if (row.inputs === row.completed && !row.dom.getNext())
{
rowInsert(row.dom);
}
};
/**
* Insère une nouvelle ligne en clonant la dernière du tableau et la purgeant de ses valeurs
*
* @param {Object} row Noeud DOM correspondant à la ligne à cloner
*/
this.rowInsert = function( row ){
//On incrémente le nombre de lignes dispo
//Ce numéro sert à changer les masques de nom de champ
++row_number;
var row_clone = row.clone();
//Clonage de la ligne
$ES('input[type=text],input[type=password],input[type=hidden],textarea', row_clone).setProperty('value', '');
$ES(params.check_inputs, row_clone).removeEvents('blur'); /* obligé car IE5+ clone aussi les évènements ... alors qu'il ne le devrait pas */
$ES(params.check_inputs, row_clone).addEvent('blur', rowCheck); /* oui oui, IE5+ ne rassignait pas cet évènement comme il fallait malgré ça */
//On remplace les noms des champs pour que permettre une utilisation des résultats $_POST
$ES(params.check_inputs, row_clone).each(function(input){
input.name = input.name.replace(new RegExp('^'+params.css_row_class+'\[[0-9]+\]'), params.css_row_class+'['+row_number+']');
});
//Injection de la ligne, une fois tout le travail terminé
row_clone.injectAfter(row);
//Nettoyage, le clonage, ça salit
row_clone = null;
row = null;
};
/*
* Initialisation de la classe
*/
this.init();
}
/*
* Initialisation du tableau multi-lignes avec les options par défaut
*/
window.addEvent(domready, articlesMultiRows);
mais il m'indique que domready n'est pas definis et quand je le simple quote il me dis que addEvent n'est pas une fonction ...
je me demande pourquoi sur son site il passe des caracteres accentué qui ne marche pas au copier coller mais bon ...
[quote="@rthur"]Bonjour,
Vérifie que les guillemets simples en soi-réellement (= créées avec la touche 4 du clavier alphanumérique)[/quote]
merci j'ai bien remplacé les caracteres par des simple quote ce qui donne :
[code]/**
* Transforme un tableau multi-lignes en un tableau mono-ligne mais auto-extensible
* Renomme également les noms de champ en suivant un masque paramétrable ; par défaut article[]
*
* @usage articlesMultiRows([{css_id: ?, css_row_class: ?, check_inputs: ?}])
* @param {Object} params Objet contenant (ou pas) les paramètres de contrôle de la classe
*/
function articlesMultiRows(params)
{
this.row_number = 0;
/*
* Extension des paramètres par défaut
*/
var params = params || {};
params.css_id = params.css_id || ajout_multi_articles;
params.css_row_class = params.css_row_class || article;
params.check_inputs = params.check_inputs || input,select,textarea;
/**
* Initialise le tableau de données et accroche les méthodes dynamiques
*/
this.init = function(){
//aucun ID détecté, pas la peine de continuer plus loin
if (!$(params.css_id))
{
return false;
}
//on récupère les lignes, on enlève la première du tableau et on supprime les autres
var rows = $(params.css_id).getElements('tr'+params.css_row_class);
var row_first = rows.shift();
rows.removeElements();
rows = null;
/*
* On assigne lévènement aux champs paramétrés de la ligne
* On place le focus sur le premier champ
*/
$ES(params.check_inputs, row_first).addEvent(blur, rowCheck);
$(row_first).getElement(input).focus();
row_number = 1;
/*
* On écrit un petit message sympathique indiquant le fonctionnement du bazar
* On le fait via JavaScript car un utilisateur sans JS ne pourrait justement pas suivre les infos
* Il est placé juste avant le tableau
*/
new Element('p',{
class : message
}).setHTML("Dès quun code article et une quantité sont saisis ci-dessous, <strong>une nouvelle ligne sajoute automatiquement</strong>.<br />Afin daccélérer votre saisie, <em>utilisez la touche de tabulation de votre clavier</em> pour passer dun champ à lautre. Vous verrez, cest facile et surtout efficace !").injectBefore(params.css_id);
};
/**
* Vérifie si la ligne a entièrement été complétée et le cas échéant, déclenche lajout de ligne
*/
this.rowCheck = function(){
var row = { inputs : 0, completed : 0, dom : $(this).getParent().getParent() };
$ES(params.check_inputs, row.dom).each(function(input){
//Un élément de plus …
++row.inputs;
//… dont on vérifie sil est bien complété
switch (input.getTag())
{
case input:
case textarea:
if (input.value.clean())
{
++row.completed;
}
break;
case select:
if (input.selectedIndex >= 0 && input.selectedIndex < input.length)
{
++row.completed;
}
break;
}
});
/*
* Pour insérer une nouvelle ligne, on doit avoir :
* - autant de champs complétés que de champs existants
* - aucun élément suivant
*/
if (row.inputs === row.completed && !row.dom.getNext())
{
rowInsert(row.dom);
}
};
/**
* Insère une nouvelle ligne en clonant la dernière du tableau et la purgeant de ses valeurs
*
* @param {Object} row Noeud DOM correspondant à la ligne à cloner
*/
this.rowInsert = function( row ){
//On incrémente le nombre de lignes dispo
//Ce numéro sert à changer les masques de nom de champ
++row_number;
var row_clone = row.clone();
//Clonage de la ligne
$ES('input[type=text],input[type=password],input[type=hidden],textarea', row_clone).setProperty('value', '');
$ES(params.check_inputs, row_clone).removeEvents('blur'); /* obligé car IE5+ clone aussi les évènements ... alors qu'il ne le devrait pas */
$ES(params.check_inputs, row_clone).addEvent('blur', rowCheck); /* oui oui, IE5+ ne rassignait pas cet évènement comme il fallait malgré ça */
//On remplace les noms des champs pour que permettre une utilisation des résultats $_POST
$ES(params.check_inputs, row_clone).each(function(input){
input.name = input.name.replace(new RegExp('^'+params.css_row_class+'\[[0-9]+\]'), params.css_row_class+'['+row_number+']');
});
//Injection de la ligne, une fois tout le travail terminé
row_clone.injectAfter(row);
//Nettoyage, le clonage, ça salit
row_clone = null;
row = null;
};
/*
* Initialisation de la classe
*/
this.init();
}
/*
* Initialisation du tableau multi-lignes avec les options par défaut
*/
window.addEvent(domready, articlesMultiRows);[/code]
mais il m'indique que domready n'est pas definis et quand je le simple quote il me dis que addEvent n'est pas une fonction ...
je me demande pourquoi sur son site il passe des caracteres accentué qui ne marche pas au copier coller mais bon ...