• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
تداخل دو onkeyup(حل شد)
#1
سلام دوستان.
من یک کد جی کوئری دارم که بوسیله 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(01));
    var 
n2 parseInt(number.substr(11));
    var 
n3 parseInt(number.substr(21));

    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 
0partCounti++) {
        var 
numberLength3;

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

        var 
partInWord getPart(numberLength3);

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

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

        if (
== 0) {
            if (
partInWord != "") {
                
partFullString[i] = partInWord " " partPreFix;
            }
            else {
                
partFullString[i] = "";
            }
        }
        else {
            if (
partFullString[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 
0partFullString.lengthi++) {
        
outString += partFullString[i];
    }

    if (
inputNumber.substr(01) == "-") {
        
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 regexpseparator "$1" );
    }
    while ( 
int.search regexp ) >= )
    
ctrl.value int;

مشکل اینجاست که هنگام تایپ کردن هم(کاما)لازم دارم و هم نیازدارم به حروف مبلغ تایپیمو ببینم
اما (کاما باعث میشه که هنگام تبدیل به حروف توو قسمت typed)ارور underfided ظاهر بشه.
البته کد تا وقتی که 3رقم توو input درج بشه درست کار میکنه.
مشکل از جایی شروع میشه که کاما به کد اضافه میشه
  پاسخ
تشکر شده توسط :
#2
سلام.

مشکل شما با یه input type hidden حل میشه
به این صورت:
کد پی‌اچ‌پی:
<input id="price" type="text" onkeyup="javascript:moneyCommaSep(this);document.getElementById('typed').innerHTML= convertNumberToString(document.getElementById('mymodel').value)+' ریال ';"/>
<
input type="hidden" id="mymodel"/>
<
div id="typed"></div
و در سمت جی کوئری هم این تغییر رو انجام میدی:
کد پی‌اچ‌پی:
// Developed By Ahmad Ahmadi
// Email : Hakan648@yahoo.com
// Web : DeveloperTeam.tk

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(01));
    var 
n2 parseInt(number.substr(11));
    var 
n3 parseInt(number.substr(21));

    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 
0partCounti++) {
        var 
numberLength3;

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

        var 
partInWord getPart(numberLength3);

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

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

        if (
== 0) {
            if (
partInWord != "") {
                
partFullString[i] = partInWord " " partPreFix;
            }
            else {
                
partFullString[i] = "";
            }
        }
        else {
            if (
partFullString[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 
0partFullString.lengthi++) {
        
outString += partFullString[i];
    }

    if (
inputNumber.substr(01) == "-") {
        
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 regexpseparator "$1" );
    }
    while ( 
int.search regexp ) >= )
    
ctrl.value int;

    var 
number = $("#price").val();
    var 
output number.replace(/,/g'');
    $(
"#mymodel").val(output);


  پاسخ
تشکر شده توسط : MRCanddy


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان