我有一个表格,智利客户需要写一个安全号码(RUT)
格式可以是老年人1.234.567-8或年轻人12.345.678-9
我需要的是,当他们输入数字时输入文字会在输入时立即改变并开始用两个点格式化数字 - 如上例所示
我创建了这段代码
<input type="text" class="inputs" name="cliente" id="cliente"
onkeydown = "this.value = this.value.replace( /^(\d{1})(\d{3})(\d{3})(\w{1})$/, '$1.$2.$3-$4')" >
&#13;
它的效果差不多但只有9位RUT但没有8位RUT,不知道如何实现这个目标吗?
答案 0 :(得分:1)
此逻辑删除任何 - 或。您之前放入它,或者用户放入它,然后执行重新格式化。它也会在keyup
而不是keydown上触发,因为在keydown上还没有添加新值。
function formatCliente (cliente) {
cliente.value = cliente.value
.replace(/[^0-9]/g, '')
.replace( /^(\d{1,2})(\d{3})(\d{3})(\w{1})$/, '$1.$2.$3-$4')
}
<input type="text" class="inputs" name="cliente"
id="cliente" onkeyup="formatCliente(this)">