没有插件的 Javascript 输入文本屏蔽

标签 javascript jquery input masking

我想在不改变实际值的情况下屏蔽输入框中的文本。我不能使用任何插件。

我目前正在这样做 - 但如您所见,问题是实际值在提交时发生了变化。我怎样才能改变显示值?

$("input[name='number']").focusout(function(){
    var number = this.value.replace(/(\d{2})(\d{3})(\d{2})/,"$1-$2-$3");
    this.value = number;
}

最佳答案

你需要两个输入

两个输入应该可以完成工作。一个输入将包含屏蔽文本,另一个将是包含真实数据的隐藏输入。

<input type="text" name="masknumber">
<input type="text" name="number" style="display:none;">

我处理屏蔽的方法是构建一个用于屏蔽和取消屏蔽内容的函数,这样一切都保持一致。

$("input[name='masknumber']").on("keyup change", function(){
        $("input[name='number']").val(destroyMask(this.value));
    this.value = createMask($("input[name='number']").val());
})

function createMask(string){
    return string.replace(/(\d{2})(\d{3})(\d{2})/,"$1-$2-$3");
}

function destroyMask(string){
    return string.replace(/\D/g,'').substring(0,8);
}

Working JSFiddle

关于没有插件的 Javascript 输入文本屏蔽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40513950/

相关文章:

javascript - 根据更新的记录更改背景颜色

javascript - 从 Angular 2 中 Chartist 的 API 获取数据

jquery - 如何从输入中输入的单词中获取第一个值(仅第一个字母)

用于动态创建输入的 jQuery 自动完成

javascript - jquery 一堆输入值乘以动态(另一个输入)

c - 在 C 中输入,特例?

javascript - Google Contacts Api 获取特定组中的联系人。 (我的联系人组)

javascript - 单击另一个选项卡时如何关闭 Accordion 选项卡?

javascript - 'function fName() { }` 和 '$(function fName(){ })' 之间有什么区别,为什么后者有效而前者无效?

javascript - Knockout - 共享 observableArray 时在模板中获取和设置选择框值的策略?