2016-02-01 6 views
0

Код ниже преобразует число в слово. Но проблема в том, что входное значение имеет некоторый пример значения 1. все же он показывает «Здесь номера напечатаны». изменить свою изменяющуюся стоимость. Если по умолчанию он имеет значение, он показывает это в текстовом формате.конвертировать число в строку с помощью javascript

<script type="text/javascript"> 
    var th = ['', ' thousand', ' million', ' billion', ' trillion', ' quadrillion', ' quintillion']; 
    var dg = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine']; 
    var tn = ['ten', 'eleven', 'twelve', 'thirteen', 'fourteen', 'fifteen', 'sixteen', 'seventeen', 'eighteen', 'nineteen']; 
    var tw = ['twenty', 'thirty', 'forty', 'fifty', 'sixty', 'seventy', 'eighty', 'ninety']; 

    function update(){ 
     var numString = document.getElementById('number').value; 
     if (numString == '0') { 
      document.getElementById('container').innerHTML = 'Zero'; 
      return; 
     } 
     if (numString == 0) { 
      document.getElementById('container').innerHTML = 'messeg tell to enter numbers'; 
      return; 
     } 

     var output = toWords(numString); 
     //print the output 
     document.getElementById('container').innerHTML = output; 
    } 

    function toWords(s) { 
     s = s.toString(); 
     s = s.replace(/[\, ]/g, ''); 
     if (s != parseFloat(s)) return 'not a number'; 
     var x = s.indexOf('.'); 
     if (x == -1) x = s.length; 
     if (x > 15) return 'too big'; 
     var n = s.split(''); 
     var str = ''; 
     var sk = 0; 
     for (var i = 0; i < x; i++) { 
      if ((x - i) % 3 == 2) { 
       if (n[i] == '1') { 
        str += tn[Number(n[i + 1])] + ' '; 
        i++; 
        sk = 1; 
       } else if (n[i] != 0) { 
        str += tw[n[i] - 2] + ' '; 
        sk = 1; 
       } 
      } else if (n[i] != 0) { 
       str += dg[n[i]] + ' '; 
       if ((x - i) % 3 == 0) str += 'hundred '; 
       sk = 1; 
      } 
      if ((x - i) % 3 == 1) { 
       if (sk) str += th[(x - i - 1)/3] + ' '; 
       sk = 0; 
      } 
     } 
     if (x != s.length) { 
      var y = s.length; 
      str += 'point '; 
      for (var i = x + 1; i < y; i++) str += dg[n[i]] + ' '; 
     } 
     return str.replace(/\s+/g, ' '); 
    } 
    </script> 

    <input name="data[Customer][customer_budget_from]" class="form-control col-md-7 col-xs-12" placeholder="From" required="required" autocomplete="off" maxlength="255" id="number" size="70" onkeyup="update();" onkeydown="return (event.ctrlKey || event.altKey 
         || (47<event.keyCode &amp;&amp; event.keyCode<58 &amp;&amp; event.shiftKey==false) 
         || (95<event.keyCode &amp;&amp; event.keyCode<106) 
         || (event.keyCode==8) || (event.keyCode==9) 
         || (event.keyCode>34 &amp;&amp; event.keyCode<40) 
         || (event.keyCode==46))" type="text" value="1"> 
    <div id="container">Here The Numbers Printed</div> 
+0

Можете ли вы объяснить вашу проблему немного больше? – hinneLinks

ответ

0

первую очередь:

var numString = document.getElementById('number').value; 

typeof numString //string 

так numString == '0' и numString == 0 то же самое.

вы должны использовать 'numString === '0' или numString === 0 вместо

Смежные вопросы