如何在文本框中替换(复制粘贴)非字母字符

时间:2014-02-21 09:19:57

标签: javascript jquery html

我的要求是我需要在文本框中替换非字母字符,只有当用户在文本框中键入时才能实现它,但如果用户复制粘贴了一些像这样的值

  

“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]+/,''))
    }
});

链接:

Demo Fiddle

3 个答案:

答案 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来解决您的问题

http://jsfiddle.net/9knXh/7/

$("#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;
});