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

افزودن ویرگول برای راحت خواندن عدد

MasterSPYware  9 سال پیش  7 سال پیش
0 0

سلام دوستان.
من یه فانکشن نوشتم برای وارد کردن قیمت که برام به حروف نشون میده.

تنها مشکلش اینه که اعداد رو فاصله نمیندازه.

من میخوام وقتی توو input تایپ میکنم 123456789 برام اینطوری نشونش بده 123.456.789
این کد منه:

 <!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>

<div id="conv">
<input id="num" type="text">
<div id="output">حروف</div>
</div>

<script type='text/javascript' src='jquery-3.2.1.js'></script>
<script>

var wordifyfa = function (num, level) {
'use strict';
if (num === null) {
return "";
}
// convert negative number to positive and get wordify value
if (num<0) {
num = num * -1;
return "منفی " + wordifyfa(num, level);
}
if (num === 0) {
if (level === 0) {
return "صفر";
} else {
return "";
}
}
var result = "",
yekan = [" یک ", " دو ", " سه ", " چهار ", " پنج ", " شش ", " هفت ", " هشت ", " نه "],
dahgan = [" بیست ", " سی ", " چهل ", " پنجاه ", " شصت ", " هفتاد ", " هشتاد ", " نود "],
sadgan = [" یکصد ", " دویست ", " سیصد ", " چهارصد ", " پانصد ", " ششصد ", " هفتصد ", " هشتصد ", " نهصد "],
dah = [" ده ", " یازده ", " دوازده ", " سیزده ", " چهارده ", " پانزده ", " شانزده ", " هفده ", " هیجده ", " نوزده "];
if (level > 0) {
result += " و ";
level -= 1;
}

if (num < 10) {
result += yekan[num - 1];
} else if (num < 20) {
result += dah[num - 10];
} else if (num < 100) {
result += dahgan[parseInt(num / 10, 10) - 2] + wordifyfa(num % 10, level + 1);
} else if (num < 1000) {
result += sadgan[parseInt(num / 100, 10) - 1] + wordifyfa(num % 100, level + 1);
} else if (num < 1000000) {
result += wordifyfa(parseInt(num / 1000, 10), level) + " هزار " + wordifyfa(num % 1000, level + 1);
} else if (num < 1000000000) {
result += wordifyfa(parseInt(num / 1000000, 10), level) + " میلیون " + wordifyfa(num % 1000000, level + 1);
} else if (num < 1000000000000) {
result += wordifyfa(parseInt(num / 1000000000, 10), level) + " میلیارد " + wordifyfa(num % 1000000000, level + 1);
} else if (num < 1000000000000000) {
result += wordifyfa(parseInt(num / 1000000000000, 10), level) + " تریلیارد " + wordifyfa(num % 1000000000000, level + 1);
}
return result;

};

var wordifyRials = function (num) {
'use strict';
return wordifyfa(num, 0) + " ریال";
};

var wordifyRialsInTomans = function (num) {
'use strict';
if (num >= 10) {
num = parseInt(num / 10, 10);
} else if (num<=-10) {
num = parseInt(num/10,10);
} else {
num=0;
}

return wordifyfa(num, 0) + " تومان";
};

if (typeof module !== ' ' && module.exports) {
module.exports.wordifyfa = wordifyfa;
module.exports.wordifyRials = wordifyRials;
module.exports.wordifyRialsInTomans = wordifyRialsInTomans;
}

$(document).ready(function() {


$("#num").keydown(function(event) {

// Allow only backspace and delete
if ( event.keyCode == 46 || event.keyCode == 8 ) {
// let it happen, don't do anything
}
else {
// Ensure that it is a number and stop the keypress
if (event.keyCode < 48 || event.keyCode > 57 ) {
event.preventDefault();
}
}

});



$("#num").focusout(function(){
$("#num").val(delimitNumbers($("#num").val()));
});

$("#num").focusin(function(){
$("#num").val( $("#num").val().replace(',', '') );
});


$('#num').on('input',function(e){
$("#num").val( $("#num").val().replace(',', '') );
$("#output").html(wordifyRialsInTomans($("#num").val()));
});



function delimitNumbers(nStr)
{
nStr += '';
x = nStr.split('.');
x1 = x[0];
x2 = x.length > 1 ? '.' + x[1] : '';
var rgx = /(\d+)(\d{3})/;
while (rgx.test(x1)) {
x1 = x1.replace(rgx, '$1' + ',' + '$2');
}
return x1 + x2;
}




});









</script>

</body>
</html>

حتما نمیخواد با جی کوئری باشه.

من شنیدم با css هم میشه!!!

البته فقط شنیدم.

دوستان راهنمایی بفرماین ممنون میشم

 
0 0
سلام دوست عزیز شما داخل همین اسکریپتت یه شرط دیگه هم اضاف کن به این صورت که هر بار باقیمانده تقسیم بر سه رقم ها برابر صفر شده یک ویرگول هم درج کنه بعد برای باقی رقم ها باز از صفر شمارش کنه یعنی مثلا عدد123بعدش یه ویرگول درج کنه سپس flagصفر شه و برای سه رقم بعد هم همینطور الی آخر این راه حلی بود که به ذهنم خورد حالا اگه راه حل بهتریم اومذ به ذهنم میگم دوست عزیز ولی فک کنم همین رو بتونی لابه لای اسکریپتات اعمال کنی :) (9 سال پیش)
0 0
من یه همچین فانکشنی با زبان php نوشتم خیلی کوتاه و دقیقه اگه خواستی بگو برات بزارم (7 سال پیش)
0 0
من اون فانکشن رو گذاشتم اینجا . یه عدد میگیره و در عوض یک رشته برمیگردونه . اعداد رو سه رقم سه رقم جدا میکنه (7 سال پیش)
 برای این سوال 8 پاسخ وجود دارد.
پاسخ به سوال 
MasterSPYware  9 سال پیش
0 0

میشه بنویسی برام؟

چون همچین چیزی نوشتم وقتی عددم چهاررقمی شده به حروف دیگه تبدیل نکرد.یعنی اعداد بعد ویرگولو اصلا نخوند

0 0
عزیز من تو شرکتم وقت نمیکنم کدش رو بنویسیم ولی سرنخ رو دستتون میدم خب از تابع on جی کوئری استفاده میکنی ؟ هر بار رویدادی رخ داد تعداد ارقام رو بگیر سعی کن آزمون خطا کنی بری جلو از آلرت استفاده کن تکه تکه کدهات رو تست کن (9 سال پیش)
پاسخ به سوال 
MasterSPYware  9 سال پیش
0 0

عیب نداره-هروقت اومدی خونه بفرست

من انقد تست گرفتم ازش خسته شدم

پاسخ به سوال 
MasterSPYware  9 سال پیش
0 0

دوست من رسیدی خونه به سلامتی؟

پاسخ به سوال 
fandroid  9 سال پیش
0 0

سلام دوست عزیز

ممنون اره خونم ببخشید دیر شد الان خوندم پیامت رو بفرما اینم کد

البته هنوز باید روش کار کنی خواستم سرنخ رو بدم دستت که چطوری باید پیش بری :)

<script>
var virgulCount=0;
$("input#username").keyup(function () {
var inputValue= $("input#username").val();
if((inputValue.length-virgulCount)%3==0&&inputValue.length>=3){
virgulCount++;
inputValue=inputValue+",";
$("input#username").val(inputValue);
}

});
</script>
 
0 0
بسیار عالی و زیبا من که خیلی لذت بردم (7 سال پیش)
پاسخ به سوال 
MasterSPYware  9 سال پیش
0 0

نه عزیزم

ببین من خودم کد مربوط رو نوشتم.

اما نمیدونم چرا عمل نمیکنه

پاسخ به سوال 
Borhani  8 سال پیش
+1 0

  php خودش یک تابع دارد که فرمت اش رو تبدیل می کند  بدون هیچ دردسری

اون هم اینه (value$)number_format

پاسخ به سوال 
reza piry ghadim  8 سال پیش
+2 0

این  تابع ویرگول هاش رو میزاره

 
function format(input){
var nStr = input.value + '';
nStr = nStr.replace( /\,/g, "");
var x = nStr.split( '.' );
var x1 = x[0];
var x2 = x.length > 1 ? '.' + x[1] : '';
var rgx = /(\d+)(\d{3})/;
while ( rgx.test(x1) ) {
x1 = x1.replace( rgx, '$1' + ',' + '$2' );
}
input.value = x1 + x2;
}

 

کافیه توی داخل تگ اینپوپ بنویسی :

 
<input name='harchi' onkeyup="format(this)" >

موفق باشید

پاسخ به سوال 
RODER  7 سال پیش
0 0

 
function xxx($input){
$output=$input;
if(strlen($input)>3){
$output = "";
$split = str_split($input);
$split=array_reverse($split);
$i=1;
foreach($split as $out){
if($i%3==0) {
$output .= $out . ",";
}else{
$output .= $out;
}
$i++;
}
$output=str_split($output);
$output=array_reverse($output);
$result="";
foreach($output as $out){
$result .= $out;
}
}

if($result[0]==",") {
$result[0] = '';
}

return $result;
}

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