De mon coté, ton code fonctionne. Je tape le nom que je veux donner à mon id de zone texte et valide en cliquant OK et j'ai une zone de texte qui s'affiche à gauche. Par contre, il aurait peut être fallu coder le bouton label qui aurait permis de savoir à quoi correspond la zone texte de ton formulaire... Continue tu est sur la bonne voie.
cordialement
La chute n'est pas un échec, l'échec c'est de rester là où on est tombé!
suite a des corrections sur les activités, j'aurais voulu prendre contact avec la personne qui utilise les div "tool" et "toolcase" et le tout très bien organisé, pour quelques renseignements sur son code / façon de faire et parcours.
qui que tu soit camarade, envoi un mp je mords pas
pour l'activité 4, celle sur ajax, le fichier externe est obligatoirement un fichier txt ou ça peut être un fichier json (qui est aussi un fichier texte) ?
PS : je n'ai pas l'impression que beaucoup de monde font ce mooc vu que mes activité prennent longtemps à être corrigée.
Malheureusement, je n'arrive toujours pas à faire fonctionner ce code.
Pour la mise en gras du premier caractere pas de probleme, mais pour le retour au texte sans gras...
voici mon code (j'avoue que je l'ai recopié, mais je l'ai commenté pour essayé de bien comprendre ce que je recopiais)
je n'arrive pas à deboguer.
/*----------------premiere lettre en gras-----*/
$('#prem-car-phrases').change(function() {
var pcp = $('#prem-car-phrases option:selected').val();
if(pcp == 'normal') {
/*si le choix est 'normal'*/
$('p').each(function() {
/* pour chaque paragraphe en cours de traitement*/
var unPar = $(this).html();
/* on récupère le texte du paragraphe en cours de traitement*/
if(unPar.indexOf('<img') == -1)
/* Si l'element en cours ne contient pas la chaine <img (parametre -1 de la methode
indexOf) donc pas d'image unPar est une chaine */
$(this).text($(this).text());
/**/
});
}
if(pcp == 'Gras') { // Si le choix est "gras"
$('p').each(function() { // Pour chaque paragraphe traiter comme suis
var tableau = $(this).text().split('. ');
/* tableau = recupération du texte du paragraphe en cours de traitement et séparation de chaque phrase en element du tableau par le séparateur '. ' */
if (tableau.length==1){} // Si la longueur du tableau
/* ne contient qu'un element ne rien faire*/
else { //sinon
var tableau2 = $.map(tableau, function(el, ind) {
/* on stock une fonction map dans tableau2 */
if (el[0] != null) return'<b>' + (el[0]) + '</b>' + el.substring(1) +'. ';
/* Cette fonction verifie la condition de la valeur examinée (si elle est null, ce doit être autre chose que du texte) la fonction retourne le 1er element de la phrase en gras + la suite de la phrase à partir du deuxième caractere jusqu'à la fin, et ajoute le point et l'espace retirer par la methode split*/
});
$(this).html(tableau2.join(''));
/* les élements du paragraphe en cours de traitement sont inséré sous forme de chaine séparer par des espace (tableau2.join(''))*/
}
});
}
});
/*----------------premiere lettre en gras-----*/
$('#prem-car-phrases').change(function() {
var pcp = $('#prem-car-phrases option:selected').val();
if(pcp == 'normal') {
/*si le choix est 'normal'*/
$('p').each(function() {
/* pour chaque paragraphe en cours de traitement*/
var unPar = $(this).html();
/* on récupère le texte du paragraphe en cours de traitement*/
if(unPar.indexOf('<img') == -1)
/* Si l'element en cours ne contient pas la chaine <img (parametre -1 de la methode indexOf) donc pas d'image unPar est une chaine */
$(this).text($(this).text());
});
}
if(pcp == 'Gras') {
// Si le choix est "gras"
$('p').each(function() {
// Pour chaque paragraphe traiter comme suis
var tableau = $(this).text().split('. ');
/* tableau = recupération du texte du paragraphe en cours de traitement et séparation de chaque phrase en element du tableau par le séparateur '. ' */
if (tableau.length==1){}
// Si la longueur du tableau ne contient qu'un element ne rien faire
else { //sinon
var tableau2 = $.map(tableau, function(el, ind) {
/* on stock une fonction map dans tableau2 */
if (el[0] != null) return'<b>' + (el[0]) + '</b>' + el.substring(1) +'. ';
/* Cette fonction verifie la condition de la valeur examinée (si elle est null, ce doit être autre chose que du texte) la fonction retourne le 1er element de la phrase en gras + la suite de la phrase à partir du deuxième caractere jusqu'à la fin, et ajoute le point et l'espace retirer par la methode split*/
});
$(this).html(tableau2.join(''));
/* les élements du paragraphe en cours de traitement sont inséré sous forme de chaine séparer par des espace (tableau2.join(''))*/
}
});
}
});
je suis au début du cour, et je me demande s'il y a moyen de redonner le focus a un input déjà créer, au moment ou on le fait apparaître avec un clic.
merci par avance.
C'est faisable (même facilement) mais sans bout de code on ne pourra pas t'aider
$(function() {
$('button').click(function() {
$('#insertion').show();
var textButton = $(this).text();
if(textButton === "Label")
{
$('#infoInsertion').text('label : ');
$('#insertion').show();
}
});
$('<div id="insertion"></div>').appendTo($('#droite'));
$('<label for="insertion" id="infoInsertion"></label>').prependTo($('#insertion'));
$('<input type="text" id="text" autofocus></input>').insertAfter($('#insertion label')); // c'est cette ligne qui dois avoir le focus a la sortie du .hide
$('<button id="envoi">ok</button>').insertAfter($('#insertion input'));
$('#insertion').hide();
$('#envoi').click(function()
{
var label = $('#infoInsertion').text();
var value = $('#text').val();
if(label === "label : ")
{
$('<label>' + value +' : </label>').appendTo($('#gauche'));
$('#text').val('');
$('#insertion').hide();
}
});
});
La méthode text() ne renvoie pas une simple chaîne de caractères mais la valeur textuelle de chaque élément auquel elle est appliquée.
La fonction va chercher la valeur textuelle de l'élément actuellement désigné par son index : le premier <p>, d'index 0, a une valeur textuelle (paramètre ou argument : actuel) égale à "Documentation officielle", et le deuxième <p>, d'index 1, a une valeur textuelle égale à "API jquery".
C'est exactement ce que renvoient les deux fenêtres alert() qui s'affichent...
Relis bien le paragraphe, c'est beaucoup plus clair que tu ne le laisses entendre (et que ce que je suis capable d'exprimer...) !
Merci Gettoudou pour ta réponse.. Mais j'ai beau relire, je n'entends toujours rien à la fonction... Qui renseigne les paramètres index et argument de la fonction ? Je vois bien dans la doc officielle qu'ils en parlent de text(function()) ... Mais bon ... Ce n'est non plus pas très explicite ... Ça reste obscur ! Je vais continuer à avancer dans le cours et j'y reviendrai plus tard !
Merci Gettoudou pour ta réponse.. Mais j'ai beau relire, je n'entends toujours rien à la fonction... Qui renseigne les paramètres index et argument de la fonction ? Je vois bien dans la doc officielle qu'ils en parlent de text(function()) ... Mais bon ... Ce n'est non plus pas très explicite ... Ça reste obscur ! Je vais continuer à avancer dans le cours et j'y reviendrai plus tard !
Bonjour ElvenElder ,
Il vaut mieux ne pas faire d'impasse sur cette partie, c'est vraiment une base.
Merci Gettoudou pour ta réponse.. Mais j'ai beau relire, je n'entends toujours rien à la fonction... Qui renseigne les paramètres index et argument de la fonction ? Je vois bien dans la doc officielle qu'ils en parlent de text(function()) ... Mais bon ... Ce n'est non plus pas très explicite ... Ça reste obscur ! Je vais continuer à avancer dans le cours et j'y reviendrai plus tard !
La doc officielle dit çà :
Je ne comprends pas ce qui reste abscons pour toi dans l'utilisation des arguments... Tu peux remplacer "actuel" par "text", ou par "toto" si tu préfères, tu obtiendras toujours le même résultat.
J'ai un problème sur l'activité de la partie 2 du cours, avec cette histoire de formulaire...
Quand je clique sur Label, tout va bien : j'écris ce que je veux, et ça s'affiche à gauche. Je précise que je peux répéter l'opération, ça fonctionne toujours.
Le problème, c'est quand je clique sur Zone de texte: la première fois ça fonctionne, mais la 2ème fois il m'affiche 2 <input> à gauche au lieu d'un seul. Et ça continue, puisqu'au 3ème clic ce sont 3 nouveaux <input> qui apparaissent...
Je ne comprend pas pourquoi ça déconne, surtout que mes codes "Label" et "Texte" ont grosso-modo la même structure...
Des idées ?
$("#texte_bouton").click (
function() {
$("#label:visible").hide();
$("#bouton:visible").hide();
$("#texte").show();
$("#texte_texte").val("");
$("#ok2").click (
function() { /*C'est ici que ca coince...*/
var id = $("#texte_texte").val();
$("#gauche").append("<input type='text' id='"+id+"'/>");
$("#texte_texte").val("");
$("#texte").hide();
});
});
tu pourrais donnais un peut plus de ton code de manière a voir si sa viens pas du code qui est avant comme #texte_bouton existe pas dans le code que tu donne, et pence a mettre des espace avant et après les + sa fait plus claire
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.