我的要求是我需要在文本框中替换非字母字符,只有当用户在文本框中键入时才能实现它,但如果用户复制粘贴了一些像这样的值
“asd5653tYgh45Ghgs34gthth65TGhd”
值未按预期替换。这里 65 没有被替换,要替换它我需要再次进行keyup或keypress,之后只更换值。我附上了jsfiddle链接供您参考。
代码:
HTML
Name :<input type='text' id='txtName' />
jQuery的:
$("#txtName").on('keyup keypress',function(){
var pattern = /^[a-zA-Z]+$/;
var txtval = $("#txtName").val();
if(!pattern.test(txtval)){
$(this).val($(this).val().replace(/[^a-zA-Z]+/,''))
}
});
链接:
答案 0 :(得分:6)
这是您的解决方案:http://jsfiddle.net/9knXh/9/
新的pregmatch是/[^a-zA-Z]+/g
g末尾意味着做除了1之外的所有
所以新代码:
$(this).val($(this).val().replace(/[^a-zA-Z]+/g,''))
编辑:我还为使用鼠标右键的人添加了更改
答案 1 :(得分:2)
结束时使用g来解决您的问题
$("#txtName").on('keyup keypress',function(){
var pattern = /^[a-zA-Z]+$/;
var txtval = $("#txtName").val();
if(!pattern.test(txtval)){
$(this).val($(this).val().replace(/[^a-zA-Z]+/g,''))
}
});
答案 2 :(得分:0)
使用此代码:
$("#txtName").on('keydown', (function() {
var keyCode = (event.keyCode) ? event.keyCode : event.which;
var isCtrl;
isCtrl = event.ctrlKey
if (isCtrl) {
if ('v' == String.fromCharCode(keyCode).toLowerCase()) {
`enter code here`
}
}
return true;
});