2014-10-30 110 views
1

我試圖阻止除數字(包括字符和數字上的那些字符)和減號( - )和加號(+ )標誌和逗號(,)。只允許數字,加號,減號,逗號,F5和更多

現在,它只鍵入我輸入的兩倍(例如2是22),它也用新數字替換當前值,但是加號,減號和逗號分別插入½,m ,和k。我也想打開在網站上使用的典型鍵,例如F5,Ctrl + R,Shift + R,刪除,首頁和結束,但我不知道如何解鎖F5,Shift + R,和Ctrl + R.

$('body').on('keydown', 'input[name="textfield-correction-temperature"]', function(c) { 
    console.log(c.keyCode); 
    if(c.keyCode != 107 && c.keyCode != 109 && c.keyCode != 188 && c.keyCode > 31 && (c.keyCode < 48 || c.keyCode > 57)) { 
     return false; 
    } else { 
     var key = String.fromCharCode(c.which); 
     $(this).val(key); 
    } 
}); 

jsFiddle demo

+1

對於第一個問題:您爲不需要的輸入(這是OK)返回false,但是如果有效,則手動添加輸入而不取消輸入。這意味着你添加一個字符,並且系統添加一個字符,導致重複。你應該總是返回false。 – 2014-10-30 21:39:41

+0

修復了有關重複值的問題:)謝謝! – Erik 2014-10-30 21:47:51

回答

0

否則使用正則表達式可能有助於只是你的代碼一點點這個同樣的過程。

這是一個使用正則表達式來阻擋任何不是一把手的例子:

$(document).ready(function() { 
 

 
    $('body').on('keydown', 'input[name="textfield-correction-temperature"]', function(c) { 
 

 
     if (String.fromCharCode(c.keyCode).replace(/[^0-9]/g, '') == '') { 
 
      return false; 
 
     } 
 

 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text" name="textfield-correction-temperature" tabindex="0" maxlength="6">

你可以,當然,修改正則表達式根據自己的喜好,輕鬆更換可接受/不可接受的字符。

+0

謝謝,但我怎麼能讓數字與正則表達式的數字鍵盤上? – Erik 2014-10-31 12:25:36

+0

我在帖子中包含的jsfiddle應該顯示它使用數字鍵盤的示例。其他鍵碼的正則表達式(如backspace)可以在這裏找到(http://regexlib.com/CheatSheet.aspx)。 – 2014-10-31 20:00:43