2014-10-27 97 views
0

我需要防止文本框輸入字母和任何其他特殊字符,除了點字符。這裏是我的功能:Javascript:return true not working

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」。但我不知道爲什麼這不允許我鍵入代碼。任何人都可以在此找到真正的問題嗎

+0

提供一個小提琴請 – ProllyGeek 2014-10-27 16:31:40

+1

無關,但爲什麼不使用'/^[0-9.]+$/.test(str )'? – tenub 2014-10-27 16:47:39

+1

如果你問關於正則表達式,它在Chrome和Firefox中的工作原理是一樣的。我剛剛在遊戲機中進行了測試。 – dmpost 2014-10-27 16:47:53

回答

1

如果我正確理解您的問題,您正在過濾傳入事件的charCode以阻止不需要的字符。如果是這樣的話,我想你需要測試key,而不是str

if (regex.test(key)) {