2017-07-20 4 views
0

Je peux compter le nombre de caractères quand je tape dans textareaCompte le nombre de caractères dans le fichier chargé dans textarea?

function count_up(obj){ 
 
    document.getElementById('numbers').innerHTML = obj.value.length; 
 
}
<textarea name="textField" class="text_edit" id="my_text" onkeyup="count_up(this);"></textarea><br/> 
 
<span id="numbers">0</span>

mais je veux compter le nombre de caractères dans le fichier lorsque je charge à textarea. Cette fonction est ok, mais je dois ajouter quelque chose au texte chargé si je veux compter les caractères dans mon fichier (c'est peu intuitif). Puis-je faire quelque chose pour le réparer?

+0

"quand je charge à textarea", vous voulez dire quand chargement dans un fichier de téléchargement? –

+0

Vous ne savez pas ce que vous demandez ... _ "quand je le charge en textarea" _ - et comment faites-vous exactement cela? Si vous n'entendez pas un "upload" réel, mais simplement un copier-coller, alors vous devriez chercher dans des gestionnaires d'événements plus appropriés, tels que 'change' ou' input'. – CBroe

+0

Oui, je télécharge le fichier avec l'entrée. Quand je télécharge un fichier, le nombre de caractères est 0, mais si j'ajoute quelque chose avec le clavier (même un caractère) le nombre de caractères est bon. Tu comprends ce que je veux dire? – kplewa

Répondre

0

Utilisez ce code pour compter les caractères lors d'un événement de manipulation.

function count_up(obj) { 
    var len = obj.value.length; 
    $("span#numbers").text(len); 
    }; 
0

Envisagez d'utiliser la promesse. Quelque chose comme:

function loadFile() { 
    return new Promise((resolve, reject) => { 
    try{ 
     //Function about loading file 
     //... 
     resolve(obj); 
    } catch (e) { 
     reject(e); 
    } 
    }); 
}; 

Ensuite, vous devriez être en mesure d'obtenir le compte en utilisant ce qui suit:

loadFile() //Will do count_up after the text is loaded 
    .then(function(obj){ 
     count_up(obj); 
    }) 
    .catch((reason) => { 
     console.log('Handle rejected promise ('+reason+') here.'); 
    }); 
1

textarea { 
 
     width: 100%; 
 
     height: 150px; 
 
     padding: 12px 20px; 
 
     box-sizing: border-box; 
 
     border: 2px solid #ccc; 
 
     border-radius: 4px; 
 
     background-color: #f8f8f8; 
 
     font-size: 16px; 
 
     resize: none; 
 
    }
<textarea name="" id="" cols="30" rows="10" onkeyup="countCharToMax(this)"></textarea> 
 
     <div id="charNum">0/30</div> 
 
    
 
    <script src="https://code.jquery.com/jquery-3.2.1.min.js"></script> 
 
    <script> 
 
     function countCharToMax(val) { 
 
      var max = 30; 
 
      var min = 0; 
 
      var len = val.value.length; 
 
      if (len >= max) { 
 
       val.value = val.value.substring(min, max); 
 
       $('#charNum').text(len + '/'+max); 
 
      } else { 
 
       $('#charNum').text(len + '/'+max); 
 
     
 
      } 
 
     }; 
 
    </script>