Javascript:返回true不工作

时间:2014-10-27 16:28:56

标签: javascript regex google-chrome firefox

我需要阻止文本框输入字母和除点字符以外的任何其他特殊字符。这是我的功能:

    function key_block(current_element,event){
                var str = current_element.val();
                //alertify.log(str);
                var regex = new RegExp("^[0-9.]+$");
                var key = String.fromCharCode(event.charCode ? event.which : event.charCode);

                if (regex.test(str)) {
                   //event.preventDefault();
                   return true;
                } else {
                     current_element.val('');

                     return false;
                }
            }
if(key_block($(this),e)){
              //allow typing
            }

该代码在Chrome浏览器中正常运行。但在Firefox中,这种方法并不正常。我在firefox中为regex.test(str)获得值“true”。但我不知道为什么这不允许我输入代码。谁能在这里找到真正的问题?

1 个答案:

答案 0 :(得分:1)

如果我正确理解您的问题,您可以过滤传入的事件charCode以阻止不需要的字符。如果是这种情况,我认为您需要测试key而不是str

if (regex.test(key)) {