a mi me funciona perfecto con este codigo 
   Código HTML:
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
<script src="js/funciones_varias.js" type="text/javascript"></script>
 </head>
 <body>
  <form name="frm">
   Texto:<br>
   <textarea name="txt" rows="5" cols="80" onKeyDown="calcula()"></textarea><br><br>
   Separadores:
   <input type="text" name="sep" value=" ,.;:">
   <input name="contador" type="text" id="contador" size="4" maxlength="4">
   <br>
   <br>
   
  </form>
 </body>
</html> 
 el  archivo de javascript se encuentra en la carpeta 
"js" y el nombre del archivo es 
"funciones_varias.js" 
Código:
    function calcula(){
    var sTxt = document.frm.txt.value;
    var sTx2 = "";
    var sSep = document.frm.sep.value;
    var iRes = 0;
    var bPalabra = false;
    for (var j = 0; j < sTxt.length; j++){
     if (sSep.indexOf(sTxt.charAt(j)) != -1){
      if (bPalabra) sTx2 += " ";
      bPalabra = false;
     } else {
      bPalabra = true;
      sTx2 += sTxt.charAt(j);
     }
    }
    if (sTx2.charAt(sTx2.length - 1) != " ") sTx2 += " ";
    for (var j = 0; j < sTx2.length; j++)
     if (sTx2.charAt(j) == " ") iRes++;
    if (sTx2.length == 1) iRes = 0;
   //alert("Número de palabras: " + String(iRes));
   document.frm.contador.value=+ String(iRes);
   }