2011-04-04 143 views
9

我有這個JavaScript函數用於在文本框中強制用戶唯一的類型編號。現在,我想修改此功能,以便用戶輸入加號(+)。如何實現這一目標?JavaScript keycode只允許數字和加號符號

//To only enable digit in the user input 

function isNumberKey(evt) 
{ 
    var charCode = (evt.which) ? evt.which : event.keyCode 
    if (charCode > 31 && (charCode < 48 || charCode > 57)) 
     return false; 
    return true; 
} 
+2

問候cyberfly所有答案都很好,但是要注意QC會返回一個問題給你,如果你實現這個功能,他們會告訴你,我不能複製和粘貼在該文本框,甚至剪切和粘貼,甚至選擇所有這樣您還必須啓用用戶使用以下按鍵: Ctrl + A, Ctrl + C, Ctrl + V, Ctrl + A – Marwan 2011-04-04 07:27:39

+0

不要使用charcode,請使用正則表達式和值。防止輸入真的讓用戶惱火,讓他們輸入任何內容並在提交時進行驗證。從上下文粘貼或編輯菜單怎麼樣? – RobG 2011-04-04 08:11:00

回答

11

由於'+'符號的十進制ASCII碼是43,所以可以將它添加到您的條件中。

例如

function isNumberKey(evt) 
{ 
    var charCode = (evt.which) ? evt.which : event.keyCode 
    if (charCode != 43 && charCode > 31 && (charCode < 48 || charCode > 57)) 
     return false; 
    return true; 
} 

這樣,加號是允許的。

+0

中定義,感謝它的簡單和有效。我曾嘗試類似您的解決方案之前,但我所指的字符代碼是107. http://www.cambiaresearch.com/c4/702b8cd1-e5b0-42e6-83ac-25f0306e3e25/Javascript-Char-Codes-Key-Codes。 ASPX – cyberfly 2011-04-04 07:29:09

6

此代碼可能工作。我添加了對SHIFT + (equal sign)和數字鍵盤+的支持。

function isNumberKey(evt) 
{ 
    var charCode = (evt.which) ? evt.which : event.keyCode; 
    var shiftPressed = (window.Event) ? e.modifiers & Event.SHIFT_MASK : e.shiftKey; 

    if ((shiftPressed && charCode == 187) || (charCode == 107)) 
    { 
    return true; 
    } else if ((charCode > 95) && (charCode < 106)) { 
    return true; 
    } else if (charCode > 31 && (charCode < 48 || charCode > 57))) { 
    return false; 
    } else { 
    return true; 
    } 
} 
+0

有什麼魔力? – 2011-04-04 07:10:15

+0

你說什麼魔法? – Blender 2011-04-04 07:12:32

+1

'(shiftPressed && charCode == 187)'。 '187'是'='鍵的keyCode,因爲'shift + ='='+'。我有點困惑,你在問什麼... – Blender 2011-04-04 07:15:22

3

這是愚蠢的......根本不是一個答案。我建議你做下面的事情。

function isNumberKey(evt) 
{ 
    console.log(evt.keyCode); 
    return false; 
} 

並找出所有鍵的範圍,並實現它。

1

下面是修改代碼:

function isNumberKey(evt) 
{ 
    var charCode = (evt.which) ? evt.which : event.keyCode 
    if ((charCode >= 48 && charCode <= 57) || charCode == 43) 
     return true; 
    return false; 
} 
-3
<script type="text/javascript"> 
$(document).ready(function() { 
    `enter code here` $('#form-1').submit(function(msg) { 
     $.post("action.php?act=login",$(this).serialize(),function(data){  
      if (data == 'ERR:A3001004') { alert("Güvenlik hatası, sayfayı yenileyin."); } 
      else if (data == 'TIMEEND') { alert("Anahtarınızın süresi dolmuş."); } 
      else if (data == 'INVALID') { alert("Geçersiz anahtar şifresi girdiniz."); } 
      else if (data == 'OK') { alert("Başarıyla giriş yaptınız. Yetişkinlere göre içerik barındıran sitelere erişim sağlayabilirsiniz."); } 
     }); 

     return false; 
    }); 
}); 
     function isNumberKey(evt) 
     { 
     var charCode = (evt.which) ? evt.which : event.keyCode 
     if (charCode > 31 && (charCode < 48 || charCode > 57)) 
      return false; 

     return true; 
     } 
</script> 
2

它的工作。 JavaScript的鍵碼允許數量和加號僅

<!DOCTYPE html> 
 
<html lang="en"> 
 
<head> 
 
<meta charset="utf-8"> 
 
<title>JavaScript form validation</title> 
 
</head> 
 
<body> 
 

 
<form name="form1" action="#"> 
 

 
Mobile Number:&nbsp;&nbsp;<input type='text' id='PhoneNumber' maxlength="10" onKeyPress="return IsNumeric3(event);" ondrop="return false;" onpaste="return false;"/> 
 
<span id="error3" style="color: Red; display: none">* Input digits (0 - 9)</span> 
 

 
</form> 
 
<script type="text/javascript"> 
 
     var specialKeys = new Array(); 
 
     specialKeys.push(8); 
 
\t \t specialKeys.push(43); 
 
\t \t specialKeys.push(37); 
 
\t \t specialKeys.push(39); 
 
\t \t //Backspace 
 
     function IsNumeric3(e) { 
 
      var keyCode = e.which ? e.which : e.keyCode 
 
      var ret = (keyCode != 37 && keyCode != 8 && keyCode != 46 && (keyCode >= 48 && keyCode <= 57) || specialKeys.indexOf(keyCode) != -1); 
 
      document.getElementById("error3").style.display = ret ? "none" : "inline"; 
 
      return ret; 
 
     } 
 
    </script> 
 

 
<script> 
 
function stringlength(inputtxt, minlength, maxlength) 
 
{ 
 
var field = inputtxt.value; 
 
var mnlen = minlength; 
 
var mxlen = maxlength; 
 

 
if(field.length<mnlen || field.length> mxlen) 
 
{ 
 
alert("Please input the 10 digit mobile number"); 
 
return false; 
 
} 
 
else 
 
{ 
 

 
return true; 
 
} 
 
} 
 
</script> 
 
</body> 
 
</html>

謝謝啦

0

這裏是代碼。使用數字工作正常並且加號+登錄電話字段。你將不得不在keydown函數上實現代碼。定位特定電話字段的id/class並使用keydown函數。

//allows only these keys 
    // backspace, delete, tab, escape, and enter 
    if (event.keyCode == 107 || event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 27 || event.keyCode == 13 || 
     // Ctrl+A 
     (event.keyCode == 65 && event.ctrlKey === true) || 
     // home, end, left, right 
     (event.keyCode >= 35 && event.keyCode <= 39)) { 
      return; 
    } 
    else { 
     // Ensure that it is a number and stop the keypress 
     if (event.shiftKey || (event.keyCode < 48 || event.keyCode > 57) && (event.keyCode < 96 || event.keyCode > 105)) { 
      event.preventDefault(); 
     } 
    } 
0

使用上述同事的經驗,編寫一個適合我的函數。它過濾除數字,箭頭和退格鍵之外的所有內容。也許這對某個人有用。

function isKeyCorrect(keyEvent) { 
    var charCode = keyEvent.which ? keyEvent.which : keyEvent.keyCode; 
    var isNotNumber = charCode < 48 || charCode > 57; 
    var isNotArrow = charCode < 37 || charCode > 40; 
    var isNotBackspace = charCode !== 8; 

    return isNotNumber && isNotArrow && isNotBackspace; 
} 
相關問題