$('input').keyup(function () {
var a = $(this).val();
if (a.match(/^tx/)) {
a = 'tx';//set manually
} else if (a.match(/^na/)) {
a = 'na';//set manually
} else if(a.match(/[\d]/)) {
a = a.replace(/[^0-9]+/g, '');//replace all but numbers
} else if (a.match(/^[nt]/)) {
a = a.replace(/^([tn])([a-zA-Z])+$/,'$1');//replace with first letter
} else {
a = '';//matches nothing equals nothing
}
$(this).val(a);//print new value
})
它使用正则表达式删除任何不需要的输入,并提供有关演示的报告。如果它不以'tx'或'na'开头,但确实有一个数字,它会切换到数字模式,如果它确实以它们中的任何一个开头,那么很难设置它们。如果没有匹配,则清空。
编辑
尽管我的回答产生了正确的结果,但它并不像使用正则表达式那样简单。
所以我也添加了 Wrikkens 正则表达式,因为它更容易:http:
//jsfiddle.net/filever10/FQ5aD/
我在功能上看到的最大区别是像“t5”这样的字符串,在 wrikkens 上,它被更改为“t”,而我的字符串则触发数字模式并将更改为“5”。
这允许它拟合问题的参数。由于此时 'tx' 或 'na' 都不存在,所以应该用数字代替,因为 't' 和 'n' 还不匹配任何东西,但数字可以;因为它只需要一个字符作为数字匹配,而其他字符需要 2 来匹配。