Jquery从输入中删除字符 - 处理一个小问题

时间:2013-12-31 14:56:30

标签: jquery forms input replace

当用户在表单字段中输入详细信息时,我编写了一小部分jquery来检查数组。

我已经设置了数组中的值以及用户类型都被检查为小写,这样工作正常。

我现在添加了一行,允许我阻止用户输入无效字符。

这再次起作用,但有一个小问题,因为它停止使用左和右;右箭头在输入字段中的字符之间来回移动。

我不知道为什么!!

$(function(){
 $("input[name='name[]']").bind("change keyup", function() {
    var val = $(this).val().toLowerCase();
    $(this).val($(this).val().replace(/[$@#!£]/, ''));
    var names = ['rod','jane','freddy'];
    var names = $.map(names, function(n,i){return n.toLowerCase();});
    var results = ($.inArray(val, names) != -1) ? "GREY" : "WHITE";
    $(this).css("background-color", results);
  });
});

我创建了一个 FIDDLE 来说明会发生什么。

如果删除以下行,则可以使用,但允许使用无效字符。

$(this).val($(this).val().replace(/[$@#!£]/, ''));

如何让它工作但允许箭头键工作?

由于

1 个答案:

答案 0 :(得分:3)

检查用户按下了哪个键,并在按下时停止该功能:

$("input[name='name[]']").bind("change keyup", function(e) { //Add the event as argument
    var keyAllowed = [37, 39]; //37 = left key code, 39 = right
    if($.inArray(e.which, keyAllowed) > -1) return; //Stop the function
    //Your code
})

小提琴:http://jsfiddle.net/gagnonka/rhJ2n/1/