数字格式(输入掩码)是一种用于控制用户输入数据格式的技术,它确保用户只能按照预定义的格式输入数字或其他字符。在jQuery中,这通常通过插件实现,用于表单字段的数据验证和格式化。
这是一个轻量级的输入掩码插件,支持多种格式。
$('.date').mask('00/00/0000');
$('.phone').mask('(000) 000-0000');
$('.credit-card').mask('0000 0000 0000 0000');
功能更强大的输入掩码解决方案。
$("#phone").inputmask("(999) 999-9999");
$("#date").inputmask("99/99/9999");
$("#serial").inputmask("a*-999-a999");
(function($) {
$.fn.numericMask = function(options) {
var settings = $.extend({
decimal: '.',
precision: 2,
prefix: '',
suffix: '',
thousands: ','
}, options);
return this.each(function() {
$(this).on('keyup', function(e) {
var value = $(this).val().replace(/[^\d.-]/g, '');
if(settings.decimal && value.indexOf('.') >= 0) {
var parts = value.split('.');
parts[0] = parts[0].replace(/\D/g, '');
parts[1] = parts[1].replace(/\D/g, '');
if(parts[1].length > settings.precision) {
parts[1] = parts[1].substring(0, settings.precision);
}
value = parts[0] + '.' + parts[1];
} else {
value = value.replace(/\D/g, '');
}
if(settings.thousands) {
value = value.replace(/\B(?=(\d{3})+(?!\d))/g, settings.thousands);
}
$(this).val(settings.prefix + value + settings.suffix);
});
});
};
})(jQuery);
// 使用示例
$('#currency').numericMask({
prefix: '$ ',
thousands: ',',
decimal: '.',
precision: 2
});
$1,234.56
(123) 456-7890
MM/DD/YYYY
1234 5678 9012 3456
123-45-6789
12345
或 12345-6789
原因:可能DOM未完全加载时尝试应用掩码
解决:确保在$(document).ready()
中初始化
$(document).ready(function() {
$('.phone').mask('(000) 000-0000');
});
原因:插件只对初始存在的元素有效 解决:使用事件委托或重新初始化
$(document).on('focus', '.dynamic-phone', function() {
$(this).mask('(000) 000-0000');
});
解决:使用更灵活的插件如Inputmask
$("#international-phone").inputmask({
mask: "+99 (999) 999-99-99",
placeholder: " ",
showMaskOnHover: false
});
通过合理使用jQuery输入掩码,可以显著提升表单的数据质量和用户体验。