2017-01-31 40 views
0
function onlyNumberInput(evt) { 
var theEvent = evt || window.event; 
    var key = theEvent.keyCode || theEvent.which; 
    key = String.fromCharCode(key); 
    var regex = /[0-9]/; 
    if(!regex.test(key)) { 
    theEvent.returnValue = false; 
    if(theEvent.preventDefault) theEvent.preventDefault(); 
    } 
} 

適用於Chrome,但在Firefox中正常工作我不能按刪除或退格鍵編輯編號。我的腳本中的問題在哪裏?當然,我可以用另一種方式來做到這一點,但我想知道在Firefox上執行上面的腳本時發生了什麼錯誤?Javascript中的簡單數字輸入驗證(Firefox錯誤)

回答

0
if(theEvent.preventDefault) theEvent.preventDefault(); 

你錯過了 「{

if(theEvent.preventDefault){ 
    theEvent.preventDefault(); 
} 

JavaScript是大小寫敏感的。請記住。 希望它有幫助。祝你好運。

+1

這是事實,JavaScript是大小寫敏感的,但也讓這個 '如果(theEvent。 preventDefault) theEvent.preventDefault(); ' 如果條件爲 –

+0

,您不必使用breackets作爲一行代碼這不是問題,我認爲......雖然我剛試過大括號。但請記住Chrome正在工作。在Firefox中,按退格鍵/ del鍵也會調用我的函數,並拒絕執行這些鍵的任何正常工作,但在Chrome中,按下這些鍵時不會調用我的函數,而只能用於調用我的函數的數字鍵,並且運行良好。 –

0

你好@Raju艾哈邁德我檢查你的代碼和數字,你正在測試密鑰的regex但問題是它只是檢查號碼,這就是你問。但你也需要檢查刪除鍵(這是46),並檢查退格鍵(這是8)和其他鍵想要使用。

另外我在Chrome build 55.0.2883.87 m(64位)上測試你的代碼,它也不適用於刪除,退格和其他。

你可能想使用這樣如果u使用jQuery:

function onlyNumberInput(evt) { 
     var theEvent = evt || window.event; 
     var allowed = [8, 17, 46, 37, 38, 39, 40]; 
     var key = theEvent.keyCode || theEvent.which; 
     var regex = /[0-9]/; 
     if($.inArray(allowed, key) !== -1) { 
      key = String.fromCharCode(key); 
      if(!regex.test(key)) { 
       theEvent.returnValue = false; 
       if(theEvent.preventDefault) 
        theEvent.preventDefault(); 
      } 
     } 
    } 

如果你想使用其他鍵,找到鍵代碼的關鍵,並添加到允許的。 如果你不在代碼中使用JQuery,請告訴我。我可以將其更改爲普通版本:)

一兩件事,這是允許的,如果你只有一個行的工作在JS使用:

if(theEvent.preventDefault) 
    theEvent.preventDefault(); 

編輯II:

好@Raju我再次檢查代碼,它不工作,因爲你希望。所以,如果你想使用它,我找到了一個關於插件的例子。

插件:NumericInput,

演示:Demo

可以查看數只輸入的這個鏈接:HTML Text Input allow only Numeric input

+0

感謝您的努力。也使用相同的版本和jQuery。您的腳本適用於Firefox中的刪除/退格,但現在無法識別兩個瀏覽器的編號。許多國家的人都將使用我的應用程序。所以它應該適用於任何版本的瀏覽器。 –