Partage
  • Partager sur Facebook
  • Partager sur Twitter

[symfony] Impossible de saisir dans un CKEditor

[symfony] Impossible de saisir dans un CKEditor

Sujet résolu
    18 avril 2019 à 9:30:50

    Bonjour, voila j'ai un problème.

    J'ai une appli qui va créer des textarea dynamiquement et après je les transforme grâce a CKEDITOR.replace("id_du_textarea");

    lorsque je clique sur le bouton ajouter tout va bien et je peux saisir (voir photo)

    Le problème est lorsque j'ordonne à mes ckeditor de changer de position grâce aux flèches qui font monter ou descendre les éléments (fonction en Angular) mais lorsque l’élément remonte la saisie se bloque et je peux plus rien saisir dans mon ckeditor en plus de m’effacer mon contenu (ça le fait uniquement lorsqu'il remonte, lorsqu'il descend cela fonctionne).(voir photo)

    Voici le code de mes fonction sur les boutons pour faire monter et descendre mes textarea :


    $scope.contenus = [];
    $scope.contenusTemp = [];
    //change l'ordre du contenu de 1 vers le bas
    	$scope.incremente = function(index){
    		for (i=0; i<$scope.contenus.length; i++){
    			if(i == index){
    				$scope.contenusTemp[i] = $scope.contenus[i+1];
    				$scope.contenusTemp[i+1] = $scope.contenus[i];
    				i = i+1;
    			}else{
    				$scope.contenusTemp[i] = $scope.contenus[i];
    			}
    		}
    		$scope.contenus = $scope.contenusTemp;
    		$scope.contenusTemp = [];
    	};
    
    	//change l'ordre du contenu de 1 vers le haut
    	$scope.decremente = function(index){
    		for (i=0; i<$scope.contenus.length; i++){
    			if(i == index){
    				$scope.contenusTemp[i] = $scope.contenus[i-1];
    				$scope.contenusTemp[i-1] = $scope.contenus[i];
                    i = i+1;
    			}else{
    				$scope.contenusTemp[i] = $scope.contenus[i];
    			}
    		}
    		$scope.contenus = $scope.contenusTemp;
    		$scope.contenusTemp = [];
    	};


    et le code de ma vue :

    <div class="col-sm-8">
    						<textarea id="procedure_contenus_{{'{{$index}}'}}_texte" name="procedure[contenus][{{'{{$index}}'}}][texte]" class="form-control vresize" initial-value>{{'{{contenu.texte}}'}}</textarea>
    						<script>
    							CKEDITOR.replace('procedure_contenus_{{'{{$index}}'}}_texte');
    						</script>
    					</div>



    • Partager sur Facebook
    • Partager sur Twitter
      23 avril 2019 à 11:12:44

      bon j'ai réglé mon problème

      //change l'ordre du contenu de 1 vers le haut
      	$scope.decremente = function(index){
      		//destruction des 2 ckeditor concerné pour pas le bloquer avec les id
      		for(name in CKEDITOR.instances)
      		{
      			if (name == "procedure_contenus_"+ (index-1) +"_texte" || name == "procedure_contenus_"+ (index) +"_texte"){
      				console.log("destruction : "+name);
      				CKEDITOR.instances[name].destroy();
      			}
      		}
      
      		//changement d'ordre
      		$scope.contenusTemp = $scope.contenus[index];
      		$scope.contenus[index] = $scope.contenus[index-1];
                      $scope.contenus[index-1] = $scope.contenusTemp;
      		$scope.contenusTemp = [];
      
      		//reconstruction des ckeditor
      		let stateCheck = setInterval(() => {
      			if (document.readyState === 'complete') {
      				clearInterval(stateCheck);
      				console.log("remplacement procedure_contenus_"+ (index-1) +"_texte")
      				console.log("remplacement procedure_contenus_"+ (index) +"_texte")
      				CKEDITOR.replace('procedure_contenus_'+ (index-1) +'_texte');
      				CKEDITOR.replace('procedure_contenus_'+ index +'_texte');
      			}
      		}, 100);
      	};


      seulement j'aimerai savoir si il existe une manière de faire exécuter un bout de code une fois que un autre est terminé et de faire patienter l'utilisateur 0.5 seconde car si il clique plein de fois très rapidement sur le bouton pour faire remonter le ckeditor cela peut créer un bug car le replace s’exécute avant le destroy en gros exécuter d'abord le bout de code de la destruction, puis une fois tout terminé exécuter le bout de code du changement et enfin une fois terminer exécuter le out de code de remplacement

      • Partager sur Facebook
      • Partager sur Twitter

      [symfony] Impossible de saisir dans un CKEditor

      × 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.
      • Editeur
      • Markdown