2016-02-04 41 views
0

我很困惑,爲什麼我不能使用10鍵輸入數字。如何將文本輸入限制爲僅允許輸入數字,但允許輸入來自10個密鑰的數字?

以下示例自動填充「/」。我嘗試了幾種不同的方法來調整它的正則表達式,但是當我這樣做時,我不能退格或刪除最後一個「/」之後的任何東西。 (01/01/2000 ... 01/01/< - 不會讓我刪除這個)。

 $('#date').keydown(function (e) { 
      var key = e.charCode || e.keyCode || 0; 
      $date = $(this); 

      if (key !== 8) { 
       var regex = new RegExp("^[0-9\t/]"); 
       var key = String.fromCharCode(!event.charCode ? event.which : event.charCode); 
       if (!regex.test(key)) { 
        event.preventDefault(); 
        return false; 
       } 

       if ($date.val().length === 0) { 
        $date.val($date.val() + ''); 
       } 
       if ($date.val().length === 2) { 
        $date.val($date.val() + '/'); 
       } 
       if ($date.val().length === 5) { 
        $date.val($date.val() + '/'); 
       } 
      } 
     }); 

請幫我想辦法在那裏繼續自動格式「/」像現在一樣,但限制爲數字只(除必需的「/」),並允許我使用的10個關鍵數字。

任何幫助將不勝感激。

預先感謝您。

回答

2

,如果你想只允許數量和忽略任何鍵: 使用此代碼在JavaScript代碼:你想要將此角色添加此屬性

$('*[data-validation="digit"]').keydown(function (e) { 
       if ($.inArray(e.keyCode, [46, 8, 9, 27, 13, 110, 190]) !== -1 || 
         (e.keyCode == 65 && e.ctrlKey === true) || 
         (e.keyCode >= 35 && e.keyCode <= 40)) { 
        return; 
       } 
       if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) { 
        e.preventDefault(); 
       } 
      }); 

任何輸入:

data-validation="digit" 

例如:

<input data-validation="digit" /> 

我推薦你使用一個屏蔽輸入插頭杜松子酒如: Masked Input plugin for jQuery

例如日期:

$("#date").mask("99/99/9999",{placeholder:"mm/dd/yyyy"}); 

在這個插件就可以字和數字或任何字符

+0

這工作非常好。正是我在找什麼。謝謝! – Matt

0

你沒有正確地檢查退格。 檢查'key'的值。

我覺得跟着它應該分配:

var key = e.keyCode; 

另外,爲什麼是它的一半e,後來你有event

var key = String.fromCharCode(!event.charCode ? event.which : event.charCode); 

這也可能會爲JS參考有用:

https://css-tricks.com/snippets/javascript/javascript-keycodes/

您可能還需要使用jQuery的which。它應該跨瀏覽器工作。

+0

感謝您的建議與鍵代碼的組合,雖然它仍然不允許來自10鍵的數字。這是我正在學習有關不同事件處理程序的第一個示例之一,所以我實際上開始使用「事件」來處理所有事件,但後來切換到「e」。我可能只是懶惰,並沒有改變所有的「事件」。但它的作用方式都是一樣的。 – Matt

+0

嘗試其他瀏覽器。另外,什麼是10? –

+0

10鍵是鍵盤右側的數字鍵盤。鍵盤頂部行中的數字正常工作,但是當您使用數字鍵盤上的數字時,該數字不起作用。 – Matt

相關問題