2014-07-12 38 views
0

在下面的代碼中,我有2個接受字母和字母數字的功能,其中當我在Mozilla Firefox中測試該標籤不工作字母數字和標籤,退格,刪除不工作對於字母表,任何人都可以幫助我解決問題。製表符和刪除使用JavaScript不工作在mozilla

function alphanumeric(e) { 

var k; 
document.all ? k = e.keyCode : k = e.which; 
return ((k > 64 && k < 91) || (k > 96 && k < 123) || k == 8 ||k == 9|| k == 32 || (k >= 48 && k <= 57)); 

}

function onlyAlphabets(e, t) { 
    try { 

     if (window.event) { 
      var charCode = window.event.keyCode; 
     } 
     else if (e) { 
      var charCode = e.which; 
     } 
     else { return true; } 
     if ((charCode > 64 && charCode < 91) || (charCode == 9 && charCode == 8)|| (charCode > 96 && charCode < 123)) 
      return true; 
     else 
      return false; 
    } 
    catch (err) { 
     alert(err.Description); 
    } 
} 
+0

你綁定了什麼事件?你能演一個演示問題的小提琴嗎? – Barmar

+0

我綁定onkeypress事件onkeypress =「返回alpha(事件);」 onkeypress =「return onlyAlphabets(event,this);」 – user3806185

回答

1

這個工作在兩個FF和Chrome:

function alphanumeric(e) { 

    var k; 
    k = e.keyCode || e.charCode; 
    return ((k > 64 && k < 91) || (k > 96 && k < 123) || k == 8 || k == 9 || k == 32 || (k >= 48 && k <= 57)); 
} 

function onlyAlphabets(e, t) { 
    try { 

     if (window.event) { 
      var charCode = window.event.keyCode; 
     } else if (e) { 
      var charCode = e.keyCode || e.charCode; 
     } else { 
      return true; 
     } 
     if ((charCode > 64 && charCode < 91) || (charCode == 9 || charCode == 8) || (charCode > 96 && charCode < 123)) return true; 
     else return false; 
    } catch (err) { 
     alert(err.Description); 
    } 
} 

onlyAlphabetic()

(charCode == 9 && charCode == 8) 

應該是:

(charCode == 9 || charCode == 8) 

charCode不可能同時等於它們兩個。

keypress事件中,某些密鑰有keyCode == 0,因此有必要使用charCode

我建議你閱讀keypresskeydown/keyupcharCodekeyCode之間的差異。

DEMO

+0

它在谷歌chroome中工作正常,而不是在mozilla – user3806185

+0

我在Mozilla Firefox中測試它。 TAB和Backspace都可以正常工作。 – Barmar

+0

我在asp.net中使用html控件 – user3806185