3

I need convert the total amount in to words with jquery in a script file.

I have the total value calculated and put int to id=(#grandT) and the same value should be converted in to words(Rupees/Indian numbering system) in textarea (#word) https://en.wikipedia.org/wiki/Indian_numbering_system

Script File

$(document).ready(function() {

  $(".input").keyup(function() {
    var valp1 = +$(".prec1").val();
    var valr1 = +$(".rate1").val();
    var valq1 = +$(".qty1").val();

    var valp2 = +$(".prec2").val();
    var valr2 = +$(".rate2").val();
    var valq2 = +$(".qty2").val();

    $("#Gst1").val((valr1 * valq1) * valp1 / 100);
    $("#Gst2").val((valr2 * valq2) * valp2 / 100);

  });

  $(".input").keyup(function() {

    var val1 = +$(".rate1").val();
    var val2 = +$(".qty1").val();

    var val3 = +$(".rate2").val();
    var val4 = +$(".qty2").val();

    var valp1 = +$(".prec1").val();
    var valp2 = +$(".prec2").val();

    var valr1 = +$(".rate1").val();
    var valr2 = +$(".rate2").val();

    var valq1 = +$(".qty1").val();
    var valq2 = +$(".qty2").val();

    $("#result1").val(val1 * val2);
    $("#result2").val(val3 * val4);

    $("#grandT").val(((val1 * val2) + (val3 * val4)) + ("/-"));

  });

});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<!DOCTYPE html>
<html>

<head>
  <meta charset="ISO-8859-1">
  <script type="text/javascript" src="jquery-1.9.1.js"></script>
  <script type="text/javascript" src="Script.js"></script>
  <link rel="stylesheet" href="StyleSheet.css">

</head>

<body>
  <page size="A4">


    <div class="rowmain">
      <table>
        <thead class="th1">
          <tr>
            <th>PRECENTAGE</th>
            <th>RATE</th>
            <th>QTY</th>
            <th>GST <br> AMOUNT
            </th>
            <th>AMOUNT</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td valign="middle"><input type="number" class="input prec1" value="" style="width: 3em" name="pre"></td>
            <td valign="middle"><input type="number" name="rate" class="input rate1" value="" style="width: 5em"></td>
            <td valign="middle"><input type="number" name="qty" class="input qty1" value="" style="width: 5em"></td>
            <td valign="middle"><input disabled="disabled" id="Gst1" style="width: 6.5em" name="gst"></td>
            <td valign="middle"><input disabled="disabled" class="text-right" id="result1" name="result1" class="input result1" value="" style="width: 7.4em"></td>
          </tr>

          <tr>
            <td valign="middle"><input type="number" class="input prec2" value="" style="width: 3em" name="pre"></td>
            <td valign="middle"><input type="number" name="rate" class="input rate2" value="" style="width: 5em"></td>
            <td valign="middle"><input type="number" name="qty" class="input qty2" value="" style="width: 5em"></td>
            <td valign="middle"><input disabled="disabled" id="Gst2" style="width: 6.5em" name="gst2"></td>
            <td valign="middle"><input disabled="disabled" class="text-right" id="result2" name="result2" class="input result2" style="width: 7.4em"></td>
          </tr>

        </tbody>
      </table>
    </div>
    <div class="rowmain">

      <div class="leftttext">
        <table class="th1">
          <tr>
            <th>Rupees in Words</th>
            <td><textarea id="word" rows="2" cols="60"></textarea></td>
          </tr>
        </table>
      </div>


      <div class="righttext">
        <table>

          <tr>
            <th class="thG">Grand Total</th>
            <td><input disabled="disabled" class="text1" id="grandT" value="" style="width: 8em"></td>
          </tr>
        </table>
      </div>
    </div>

  </page>
</body>

</html>
ksankar
  • 465
  • 7
  • 13
Sam Mulla
  • 57
  • 8
  • Does this answer your question? [Convert digits into words with JavaScript](https://stackoverflow.com/questions/14766951/convert-digits-into-words-with-javascript) – demkovych Feb 18 '20 at 16:52
  • I see but not worker into my problem wan jquery return value of id="grandT" then not convert function is runing – Sam Mulla Feb 18 '20 at 17:12

2 Answers2

2

Here's a working snippet of what you wanted to achieve, as already suggested the conversion to word is done by the snippet in answer here: Convert digits into words with JavaScript, I recommend you read and look at the published package if that's more useful for you.

/* 
 * taken from 
 * https://stackoverflow.com/questions/14766951/convert-digits-into-words-with-javascript
*/
var a = ['', 'one ', 'two ', 'three ', 'four ', 'five ', 'six ', 'seven ', 'eight ', 'nine ', 'ten ', 'eleven ', 'twelve ', 'thirteen ', 'fourteen ', 'fifteen ', 'sixteen ', 'seventeen ', 'eighteen ', 'nineteen '];
var b = ['', '', 'twenty', 'thirty', 'forty', 'fifty', 'sixty', 'seventy', 'eighty', 'ninety'];

function inWords(num) {
    if ((num = num.toString()).length > 9) return 'overflow';
    n = ('000000000' + num).substr(-9).match(/^(\d{2})(\d{2})(\d{2})(\d{1})(\d{2})$/);
    if (!n) return;
    var str = '';
    str += (n[1] != 0) ? (a[Number(n[1])] || b[n[1][0]] + ' ' + a[n[1][1]]) + 'crore ' : '';
    str += (n[2] != 0) ? (a[Number(n[2])] || b[n[2][0]] + ' ' + a[n[2][1]]) + 'lakh ' : '';
    str += (n[3] != 0) ? (a[Number(n[3])] || b[n[3][0]] + ' ' + a[n[3][1]]) + 'thousand ' : '';
    str += (n[4] != 0) ? (a[Number(n[4])] || b[n[4][0]] + ' ' + a[n[4][1]]) + 'hundred ' : '';
    str += (n[5] != 0) ? ((str != '') ? 'and ' : '') + (a[Number(n[5])] || b[n[5][0]] + ' ' + a[n[5][1]]) + 'only ' : '';
    return str;
}


$(document).ready(function() {

    $(".input").keyup(function() {
        var valp1 = +$(".prec1").val();
        var valr1 = +$(".rate1").val();
        var valq1 = +$(".qty1").val();

        var valp2 = +$(".prec2").val();
        var valr2 = +$(".rate2").val();
        var valq2 = +$(".qty2").val();

        $("#Gst1").val((valr1 * valq1) * valp1 / 100);
        $("#Gst2").val((valr2 * valq2) * valp2 / 100);

    });

    $(".input").keyup(function() {

            var val1 = +$(".rate1").val();
            var val2 = +$(".qty1").val();

            var val3 = +$(".rate2").val();
            var val4 = +$(".qty2").val();

            var valp1 = +$(".prec1").val();
            var valp2 = +$(".prec2").val();

            var valr1 = +$(".rate1").val();
            var valr2 = +$(".rate2").val();

            var valq1 = +$(".qty1").val();
            var valq2 = +$(".qty2").val();

            $("#result1").val(val1 * val2);
            $("#result2").val(val3 * val4);

            var total = (val1 * val2) + (val3 * val4);

            $("#grandT").val(total + "/-");
            
            $("#word").val(inWords(total));
    });

});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<!DOCTYPE html>
<html>

<head>
  <meta charset="ISO-8859-1">
  <script type="text/javascript" src="jquery-1.9.1.js"></script>
  <script type="text/javascript" src="Script.js"></script>
  <link rel="stylesheet" href="StyleSheet.css">

</head>

<body>
  <page size="A4">


    <div class="rowmain">
      <table>
        <thead class="th1">
          <tr>
            <th>PRECENTAGE</th>
            <th>RATE</th>
            <th>QTY</th>
            <th>GST <br> AMOUNT
            </th>
            <th>AMOUNT</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td valign="middle"><input type="number" class="input prec1" value="" style="width: 3em" name="pre"></td>
            <td valign="middle"><input type="number" name="rate" class="input rate1" value="" style="width: 5em"></td>
            <td valign="middle"><input type="number" name="qty" class="input qty1" value="" style="width: 5em"></td>
            <td valign="middle"><input disabled="disabled" id="Gst1" style="width: 6.5em" name="gst"></td>
            <td valign="middle"><input disabled="disabled" class="text-right" id="result1" name="result1" class="input result1" value="" style="width: 7.4em"></td>
          </tr>

          <tr>
            <td valign="middle"><input type="number" class="input prec2" value="" style="width: 3em" name="pre"></td>
            <td valign="middle"><input type="number" name="rate" class="input rate2" value="" style="width: 5em"></td>
            <td valign="middle"><input type="number" name="qty" class="input qty2" value="" style="width: 5em"></td>
            <td valign="middle"><input disabled="disabled" id="Gst2" style="width: 6.5em" name="gst2"></td>
            <td valign="middle"><input disabled="disabled" class="text-right" id="result2" name="result2" class="input result2" style="width: 7.4em"></td>
          </tr>

        </tbody>
      </table>
    </div>
    <div class="rowmain">

      <div class="leftttext">
        <table class="th1">
          <tr>
            <th>Rupees in Words</th>
            <td><textarea id="word" rows="2" cols="60"></textarea></td>
          </tr>
        </table>
      </div>


      <div class="righttext">
        <table>

          <tr>
            <th class="thG">Grand Total</th>
            <td><input disabled="disabled" class="text1" id="grandT" value="" style="width: 8em"></td>
          </tr>
        </table>
      </div>
    </div>

  </page>
</body>

</html>
ksankar
  • 465
  • 7
  • 13
-1

Here is a simple short method to convert numbers to words in English.

//----------------------------------------------------------------
function numToWords(num = 0) {
if (num==0) return "Zero";
num=("0".repeat(2*(num+="").length%3)+num).match(/.{3}/g);
let out="",T1=["","One","Two","Three","Four","Five","Six","Seven","Eight","Nine","Ten","Eleven","Twelve","Thirteen","Fourteen","Fifteen","Sixteen","Seventeen","Eighteen","Nineteen"],
T2=["","","Twenty","Thirty","Forty","Fifty","Sixty","Seventy","Eighty","Ninety"],
SC=["","Thousand","Million","Billion","Trillion","Quadrillion"];
return num.forEach((n,i)=>{if(+n){let h=+n[0],t=+n.substring(1),S=SC[num.length-i-1];
out+=(out?" ":"")+(h?T1[h]+" Hundred":"")+(h&&t?" ":"")+(t<20?T1[t]:T2[+n[1]]+(+n[2]?"-":"")+T1[+n[2]]);
out+=(out && S?" ":"")+S;}}),out;}
//----------------------------------------------------------------









console.log(numToWords(0))
console.log(numToWords(22))
console.log(numToWords(1234))
console.log(numToWords(3354646))
Mohsen Alyafei
  • 4,765
  • 3
  • 30
  • 42