افزودن ویرگول برای راحت خواندن عدد
سلام دوستان.
من یه فانکشن نوشتم برای وارد کردن قیمت که برام به حروف نشون میده.
تنها مشکلش اینه که اعداد رو فاصله نمیندازه.
من میخوام وقتی توو 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 هم میشه!!!
البته فقط شنیدم.
دوستان راهنمایی بفرماین ممنون میشم
میشه بنویسی برام؟
چون همچین چیزی نوشتم وقتی عددم چهاررقمی شده به حروف دیگه تبدیل نکرد.یعنی اعداد بعد ویرگولو اصلا نخوند
عیب نداره-هروقت اومدی خونه بفرست
من انقد تست گرفتم ازش خسته شدم
سلام دوست عزیز
ممنون اره خونم ببخشید دیر شد الان خوندم پیامت رو بفرما اینم کد
البته هنوز باید روش کار کنی خواستم سرنخ رو بدم دستت که چطوری باید پیش بری :)
<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>
نه عزیزم
ببین من خودم کد مربوط رو نوشتم.
اما نمیدونم چرا عمل نمیکنه
php خودش یک تابع دارد که فرمت اش رو تبدیل می کند بدون هیچ دردسری
اون هم اینه (value$)number_format
این تابع ویرگول هاش رو میزاره
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)" >
موفق باشید
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;
}
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .