我正在使用jsGrid JQuery插件来显示和编辑付款。虽然这是一个很好的选择,但我无法使用内置字段来修改“付款金额”。如果我使用'号码'类型,我无法在小数位后输入数字。如果我使用'文字'我可以输入非数字值。
到目前为止,这是我的代码
$("#jsGrid").jsGrid({
width: "100%",
height: "auto",
editing: true,
paging: true,
autoload: true,
loadIndication: true,
loadIndicationDelay: 500,
loadMessage: "Please, wait...",
loadShading: true,
controller: {
loadData: function () {
return $.ajax({
type: "GET",
url: AJAX_URL_GET_CALCULATED_AFFECTED_PAYMENTS,
data: { 'startDate': startDate, 'endDate': endDate },
dataType: "json",
cache: false,
});
},
},
fields: [
{ name: "PaymentDate", title: "Payment Date", type: "text", width: 150, editing: false, },
{ name: "PaymentEndDate", title: "Payment End Date", type: "text", width: 150, editing: false, },
{ name: "PaymentStatusDisplay", title: "Payment Status", type: "text", width: 150, align: "center", editing: false, },
{
name: "PaymentAmount", title: "Payment Amount", type: "number", width: 100, align: "center", editing: true,
itemTemplate: function(value) {
return "$" + value;
},
},
{ type: "control", deleteButton: false, editButton: true, editButtonTooltip: "Edit Amount", }
]
});
是否有人使用此插件获得示例或设法创建自定义字段类型或使用字段模板编辑jsGrid中的字段以仅允许货币值(数字,逗号,小数)
提前谢谢。
答案 0 :(得分:7)
您可以按以下方式定义自定义字段:
function MoneyField(config) {
jsGrid.NumberField.call(this, config);
}
MoneyField.prototype = new jsGrid.NumberField({
itemTemplate: function(value) {
return "$" + value.toFixed(2);
}
filterValue: function() {
return parseFloat(this.filterControl.val() || 0);
},
insertValue: function() {
return parseFloat(this.insertControl.val() || 0);
},
editValue: function() {
return parseFloat(this.editControl.val() || 0);
}
});
jsGrid.fields.money = MoneyField;
现在您可以在字段指定type="money"
答案 1 :(得分:2)
以下是如何设置显示值的格式。这将以以下格式打印数字$ 1,000.00。
声明函数:
function formatNumberForDisplay(numberToFormat) {
var formatter = new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD',
digits: 2,
});
return formatter.format(numberToFormat);
}

然后只需在itemTemplate方法中使用它:
itemTemplate: function(value) {
return formatNumberForDisplay(value) ;
},