ฉันไม่ต้องการมาสก์ แต่ฉันต้องการบางอย่างที่จะจัดรูปแบบสกุลเงิน (ในเบราว์เซอร์ทั้งหมด) และไม่อนุญาตให้พิมพ์ตัวอักษรหรืออักขระพิเศษใด ๆ ขอบคุณสำหรับความช่วยเหลือ
ตัวอย่าง:
ใช้ได้: $50.00
$1,000.53
ไม่ถูกต้อง: $w45.00
$34.3r6
ฉันไม่ต้องการมาสก์ แต่ฉันต้องการบางอย่างที่จะจัดรูปแบบสกุลเงิน (ในเบราว์เซอร์ทั้งหมด) และไม่อนุญาตให้พิมพ์ตัวอักษรหรืออักขระพิเศษใด ๆ ขอบคุณสำหรับความช่วยเหลือ
ตัวอย่าง:
ใช้ได้: $50.00
$1,000.53
ไม่ถูกต้อง: $w45.00
$34.3r6
ปลั๊กอินรูปแบบ JQUERY
http://code.google.com/p/jquery-formatcurrency/
ตัวเลือกอื่น (หากคุณใช้มุมมองมีดโกน ASP.Net) คือ ในมุมมองของคุณ คุณสามารถทำได้
<div>@String.Format("{0:C}", Model.total)</div>
นี่จะเป็นการจัดรูปแบบอย่างถูกต้อง หมายเหตุ (item.total เป็นสองเท่า/ทศนิยม)
หากใน jQuery คุณสามารถใช้ Regex ได้
$(".totalSum").text('$' + parseFloat(total, 10).toFixed(2).replace(/(\d)(?=(\d{3})+\.)/g, "$1,").toString());
@String.Format
ในการอ้างอิง HTML หรือ jQuery ใด ๆ ฉันเดาว่ามันเกี่ยวข้องกับ HTML ฝั่งเซิร์ฟเวอร์ที่สร้างโดย ASP.NET คำถามเดิมอ้างอิงถึงสิ่งนั้นหรือไม่
- person Nate; 03.12.2013
การขยายคำตอบของ Melu คุณสามารถทำได้เพื่อใช้งานโค้ดและจัดการกับจำนวนลบ
ตัวอย่างผลลัพธ์:
$5.23
-$5.23
function formatCurrency(total) {
var neg = false;
if(total < 0) {
neg = true;
total = Math.abs(total);
}
return (neg ? "-$" : '$') + parseFloat(total, 10).toFixed(2).replace(/(\d)(?=(\d{3})+\.)/g, "$1,").toString();
}
เพื่อพิสูจน์ว่าเหตุใดปลั๊กอิน jQuery FormatCurrency จึงเป็นคำตอบที่ดี ฉันอยากจะโต้แย้งความคิดเห็นของคุณ:
1. code.google.com/p/jquery-formatcurrency - ไม่กรองตัวอักษรทั้งหมดออก คุณสามารถพิมพ์อักษรตัวเดียวและจะไม่ลบออก
ใช่ formatCurrency() ด้วยตัวเองไม่ได้กรองตัวอักษรออก:
// only formats currency
$(selector).formatCurrency();
แต่ toNumber() ซึ่งรวมอยู่ในปลั๊กอิน formatCurrency ทำได้
คุณต้องการที่จะทำ:
// removes invalid characters, then formats currency
$(selector).toNumber().formatCurrency();
ใช้ jquery.inputmask 3.x ดูการสาธิตที่นี่
รวมไฟล์:
<script src="/assets/jquery.inputmask.js" type="text/javascript"></script>
<script src="/assets/jquery.inputmask.extensions.js" type="text/javascript"></script>
<script src="/assets/jquery.inputmask.numeric.extensions.js" type="text/javascript"></script>
และโค้ดเป็น
$(selector).inputmask('decimal',
{ 'alias': 'numeric',
'groupSeparator': '.',
'autoGroup': true,
'digits': 2,
'radixPoint': ",",
'digitsOptional': false,
'allowMinus': false,
'prefix': '$ ',
'placeholder': '0'
}
);
ไฮไลท์:
$('.price-format').inputmaks()
หรือ $('.price-format').each(function() { $(this).inputmask() })
- person remkovdm; 04.08.2020
$('.price-format').inputmask('decimal', { ... });
ควร ได้ผล
- person drew010; 13.08.2020
ฉันเคยใช้ปลั๊กอินสกุลเงินรูปแบบ jquery แต่เมื่อเร็ว ๆ นี้มีปัญหามาก ฉันต้องการเพียงการจัดรูปแบบสำหรับ USD/CAD ดังนั้นฉันจึงเขียนการจัดรูปแบบอัตโนมัติของตัวเอง
$(".currencyMask").change(function () {
if (!$.isNumeric($(this).val()))
$(this).val('0').trigger('change');
$(this).val(parseFloat($(this).val(), 10).toFixed(2).replace(/(\d)(?=(\d{3})+\.)/g, "$1,").toString());
});
เพียงตั้งค่าคลาสของอินพุตที่ควรจัดรูปแบบเป็นสกุลเงิน <input type="text" class="currencyMask" />
แล้วระบบจะจัดรูปแบบให้สมบูรณ์แบบในเบราว์เซอร์ใดก็ได้
ลองใช้สกุลเงิน regexp ด้วย jQuery (ไม่มีปลั๊กอิน):
$(document).ready(function(){
$('#test').click(function() {
TESTCURRENCY = $('#value').val().toString().match(/(?=[\s\d])(?:\s\.|\d+(?:[.]\d+)*)/gmi);
if (TESTCURRENCY.length <= 1) {
$('#valueshow').val(
parseFloat(TESTCURRENCY.toString().match(/^\d+(?:\.\d{0,2})?/))
);
} else {
$('#valueshow').val('Invalid a value!');
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<input type="text" value="12345.67890" id="value">
<input type="button" id="test" value="CLICK">
<input type="text" value="" id="valueshow">
แก้ไข: ตรวจสอบค่าใหม่ให้ถูกต้อง/ไม่ถูกต้อง