آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

تداخل دو onkeyup

mater  8 سال پیش  8 سال پیش
0 0

سلام دوستان.
من یک کد جی کوئری دارم که بوسیله onkeyup از html داره دستور میگیره.

 <input type="text" onkeyup="javascript:moneyCommaSep(this);document.getElementById('typed').innerHTML= convertNumberToString(this.value)+' ریال ';"/>
<div id="typed"></div> 

اینم کد جی کوئری

 var s_0_9 = new Array('صفر', 'یک', 'دو', 'سه', 'چهار', 'پنج', 'شش', 'هفت', 'هشت', 'نه');
var s_10_19 = new Array('ده', 'یازده', 'دوازده', 'سیزده', 'چهارده', 'پانزده', 'شانزده', 'هفده', 'هجده', 'نوزده');
var s_20_90 = new Array('بیست', 'سی', 'چهل', 'پنجاه', 'شصت', 'هفتاد', 'هشتاد', 'نود');
var s_100_900 = new Array('صد', 'دویست', 'سیصد', 'چهارصد', 'پانصد', 'ششصد', 'هفتصد', 'هشتصد', 'نهصد');
var s_Parts = new Array('هزار', 'میلیون', 'میلیارد', 'تريليون');
var splitter = " و ";
var veryBig = "تعریف نشده";
var negative = "منفی";

function getPart(numberIn3) {
    if (numberIn3.length > 3) {
        return "";
    }

    var number = numberIn3.toString();

    switch (number.length) {
        case 1:
            number = "00" + number;
            break;
        case 2:
            number = "0" + number;
            break;
    }

    var outString = "";

    var n1 = parseInt(number.substr(0, 1));
    var n2 = parseInt(number.substr(1, 1));
    var n3 = parseInt(number.substr(2, 1));

    if (n1 != 0) {
        switch (n2) {
            case 0:
                if (n3 != 0) {
                    outString = s_100_900[n1 - 1] + splitter + s_0_9[n3];
                }
                else {
                    outString = s_100_900[n1 - 1];
                };
                break;
            case 1:
                outString = s_100_900[n1 - 1] + splitter + s_10_19[n3];
                break;
            default:
                if (n3 != 0) {
                    outString = s_100_900[n1 - 1] + splitter + s_20_90[n2 - 2] + splitter + s_0_9[n3];
                }
                else {
                    outString = s_100_900[n1 - 1] + splitter + s_20_90[n2 - 2];
                }
        }
    }
    else {
        switch (n2) {
            case 0:
                if (n3 != 0) {
                    outString = s_0_9[n3];
                }
                else {
                    outString = "";
                }
                break;
            case 1:
                outString = s_10_19[n3];
                break;
            default:
                if (n3 != 0) {
                    outString = s_20_90[n2 - 2] + splitter + s_0_9[n3];
                }
                else {
                    outString = s_20_90[n2 - 2];
                }
        }
    };

    return outString;
}

function convertNumberToString(inputNumber) {
    var tempNumber = Math.abs(inputNumber).toString();
            
    if (tempNumber.length == 0) {
        return "";
    }

    if (tempNumber == 0)
        return s_0_9[0];

    var partCount = Math.ceil((parseInt(tempNumber).toString().length / 3), 1);

    if (s_Parts.length < partCount)
        return veryBig;

    var partFullString = new Array();

    for (var i = 0; i < partCount; i++) {
        var numberLength3;

        var lengthToSelectFirtPart;
        if (i == 0) {
            lengthToSelectFirtPart = tempNumber.length - ((partCount - 1) * 3);
            numberLength3 = tempNumber.substr((i * 3), lengthToSelectFirtPart);
        }
        else {
            numberLength3 = tempNumber.substr(lengthToSelectFirtPart + ((i - 1) * 3), 3);
        }

        var partInWord = getPart(numberLength3);

        var partIndex = (partCount - 2 - i);
        var partPreFix = s_Parts[partIndex];

        if (i == partCount - 1) {
            partPreFix = "";
        }

        if (i == 0) {
            if (partInWord != "") {
                partFullString[i] = partInWord + " " + partPreFix;
            }
            else {
                partFullString[i] = "";
            }
        }
        else {
            if (partFullString[i - 1] != "") {
                if (partInWord != "") {
                    partFullString[i] = splitter + partInWord + " " + partPreFix;
                }
                else {
                    partFullString[i] = "";
                }
            }
            else {
                if (partInWord != "") {
                    partFullString[i] = splitter + partInWord + " " + partPreFix;
                }
                else {
                    partFullString[i] = "";
                }
            }
        }
    }

    var outString = "";

    for (var i = 0; i < partFullString.length; i++) {
        outString += partFullString[i];
    }

    if (inputNumber.substr(0, 1) == "-") {
        outString = negative + " " + outString;
    }

    return outString;
}

function moneyCommaSep(ctrl)
{
    var separator = ",";
    var int = ctrl.value.replace ( new RegExp ( separator, "g" ), "" );
    var regexp = new RegExp ( "\\B(\\d{3})(" + separator + "|$)" );
    do
    {
        int = int.replace ( regexp, separator + "$1" );
    }
    while ( int.search ( regexp ) >= 0 )
    ctrl.value = int;
مشکل اینجاست که هنگام تایپ کردن هم(کاما)لازم دارم و هم نیازدارم به حروف مبلغ تایپیمو ببینم
اما (کاما باعث میشه که هنگام تبدیل به حروف توو قسمت typed)ارور underfided ظاهر بشه.
البته کد تا وقتی که 3رقم توو input درج بشه درست کار میکنه.
مشکل از جایی شروع میشه که کاما به کد اضافه میشه
 
0 0
از این استفاده کنی مشکل کاما حل میشه :(value$)number_format (8 سال پیش)
 برای این سوال پاسخی وجود ندارد.

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .