Ricardo Binns
Ricardo Binns

Reputation: 3246

Number to Word - jquery

Anyone know's a way to describe a cash value or a plugin who does that ?

exp: if i have $ 1.200.000,00 and the user hover() the value: description will be "one million two hundred "

Thanks!

Upvotes: 9

Views: 25541

Answers (6)

Bhanu Pratap
Bhanu Pratap

Reputation: 1761

Convert number to words

<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
  $("button").click(function(){
    $("#p1").text(ConvertNumberToWords("1.99","rupees", "paisa"));
     $("#p2").text(ConvertNumberToWords("999.99","rupees", "paisa"));
  });
});
function ConvertNumberToWords(doubleNumber, mainAmountType, decimalAmountType) {
    var beforeFloatingPoint = parseInt(doubleNumber.toString().split('.')[0]);
    var beforeFloatingPointWord = NumberToWords(beforeFloatingPoint) + " " + (beforeFloatingPoint > 1 ? mainAmountType : mainAmountType.slice(0,-1));
    var afterFloatingPoint = parseInt(doubleNumber.toString().includes('.') ? doubleNumber.toString().split('.')[1] : "0");
    var afterFloatingPointWord = SmallNumberToWord(afterFloatingPoint, "") + " " + decimalAmountType + " only.";
    if (afterFloatingPoint > 0) {
        return beforeFloatingPointWord + " and " + afterFloatingPointWord;
    }
    else {
        return beforeFloatingPointWord + " only";
    }
}
function NumberToWords(number) {
    if (number == 0)
        return "zero";
    if (number < 0)
        return "minus " + NumberToWords(Math.abs(number));
    var words = "";
    if (number> 1000000000 && number / 1000000000 > 0) {
        words += NumberToWords(Math.floor(number / 1000000000)) + " billion ";
        number %= 1000000000;
    }
    if (number> 1000000 && number / 1000000 > 0) {
        words += NumberToWords(Math.floor(number / 1000000)) + " million ";
        number %= 1000000;
    }
    if (number> 1000 && number / 1000 > 0) {
        words += NumberToWords(Math.floor(number / 1000)) + " thousand ";
        number %= 1000;
    }
    if (number> 100 && number / 100 > 0) {
        words += NumberToWords(Math.floor(number / 100)) + " hundred ";
        number %= 100;
    }
    words = SmallNumberToWord(number, words);
    return words;
}

function SmallNumberToWord(number, words) {
    if (number <= 0) return words;
    if (words != "")
        words += "";
    var unitsMap = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen"];
    var tensMap = ["zero", "ten", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety"];
    if (number < 20)
        words += unitsMap[number];
    else {
        words += tensMap[Math.floor(number / 10)];
        if ((number % 10) > 0)
            words += " " + unitsMap[number % 10];
    }
    return words;
}
</script>
</head>
<body>

<h2>Convert number to words</h2>
<p id="p1">paragraph1: 1.99</p>
<p id="p2">paragraph2: 999.99</p>
<button>Click me to convert number to words </button>
</body>
</html>

Sample Examples Before convert

After Convert

Upvotes: 1

user6782881
user6782881

Reputation:

you can add this code for number to word.if your field are coming dynamic.Just apply the class ".numtowordcls" on your input type

function getNumberToWord(thisObj){
        var dataType=$(thisObj).attr("dir");

         if(dataType!=null && dataType!="" ){
            var value=$(thisObj).val();
            if(dataType==='decimal' || dataType==='currency' || dataType==='number' || dataType==='emd' ){
                if(value!=undefined && value.trim()!="" ){
                    if(isNaN(value)){
                    alert("Kindly Enter Valid Value For Filed Type '"+dataType+"'");
                    $(thisObj).val("");
                    $(thisObj).focus();
                    }else{
                        if(value!=undefined && value.trim()!=""){
                            if(!$.isNumeric(value)){
                            alert("Please Eneter Numeric value !!!");
                            $(this).val('');
                            return false;
                            }

                            var firstPart=value.toString().split(".")[0];
                            if(firstPart.length>14){
                                alert("Please Enter value upto 14 Digit !!!");
                                $(thisObj).val(value.substr(0,14));
                                $(thisObj).focus();
                                return false;
                            }
                            var secondPart=value.toString().split(".")[1];
                            if(secondPart!=undefined && secondPart!="" && secondPart.length>2){
                                alert("Decimal allowed upto 2 places !!!");
                                $(thisObj).val(value.substr(0,14));
                                $(thisObj).focus();
                                return false;
                            }  
                        }
                    }
                }

            }

        } 
        $(".numtowordcls").each(function(){
            var id=$(this).attr("id");
            var dirObj=$(this).attr("dir");
            var dataArray=id.split("_");
            var finalId=dataArray[0]+"_"+dataArray[1]+"_"+dirObj;
            var fieldvalue=$("#"+finalId).val();
            if(fieldvalue!=undefined && fieldvalue.trim()!=""){
                var ntwidvalue=ntwidvalue+""+$(this).attr("id")+"~~~"+parseFloat(fieldvalue)+"~~~~";

            }else{
                $('#'+id).val("");
            }

        });
        console.log("aaaa");
        $('button').click(function(){
            var input = $('input');
            input.val('ntwidvalue');
            input.trigger('input');
        });
    }

Upvotes: 0

Vijayalakshmi S M
Vijayalakshmi S M

Reputation: 1

Validation for text box allowing only one dot

if(!document.getElementById("per").value.match(/^[0-9]*\.?[0-9]*$/)) //"per" is the id text box
{
   alert("Enter Correct Interest Rate");
   return (false);
}

I hope this might help.

Upvotes: 0

Arnaud Leymet
Arnaud Leymet

Reputation: 6122

Here is a Javascript solution that's both compact and working well:

Number to Words

It can be used like this:

var words = toWords(num);

Upvotes: 1

Rion Williams
Rion Williams

Reputation: 76547

The following page mentions a very simple implementation:

Number to Words | Javascript

which can perform the conversion by using this function:

var words = toWords(num);

Using jQuery, you can wrap this inside of your hover function, as shown below:

//This will add a tooltip upon hovering with the "word" value.
$('div').hover(function(){
    $(this).attr('title',toWords($(this).text()));
});

Working Demo

Upvotes: 16

dciso
dciso

Reputation: 1264

Should check the source of this example, with some modification you should be able to achieve this:

http://abhisanoujam.blogspot.com/2009/07/having-fun-with-jquery-numbers-to-words.html

Upvotes: 2

Related Questions