2011-04-04 53 views
9

Tengo esta función de JavaScript que se usa para forzar al usuario solo a escribir el número en el cuadro de texto. En este momento, quiero modificar esta función para que el usuario pueda ingresar el símbolo más (+). ¿Cómo lograr esto?Código clave de JavaScript permite el número y el símbolo más solo

//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

Saludos cyberfly Todas las respuestas están bien, pero se advirtió QC volverá un problema para usted que si se implementa esta función le dirán que no puedo copiar y pegar en el campo respectivo o incluso cortar y pegar o incluso seleccionar todos tan también debe habilitar al usuario para usar las siguientes claves Ctrl + A, Ctrl + C, Ctrl + V, Ctrl + A – Marwan

+0

No utilice el código de caracteres, use una expresión regular y el valor. Evitar la entrada realmente molesta a los usuarios, les permite ingresar lo que sea y validar en el envío. ¿Qué hay de pegar desde el menú contextual o Editar? – RobG

Respuesta

11

Dado que el código ASCII decimal del símbolo '+' es 43, puede agregarlo a su condición.

por ejemplo:

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

De esta manera, se permite el símbolo Plus.

+0

gracias simple y funciona.He intentado algo así como su solución antes, pero el código de char me estoy refiriendo es 107. http://www.cambiaresearch.com/c4/702b8cd1-e5b0-42e6-83ac-25f0306e3e25/Javascript-Char-Codes-Key-Codes. aspx – cyberfly

6

Este código puede funcionar. Agregué soporte para SHIFT + (equal sign) y el teclado numérico +.

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

¿cuál es la magia? –

+0

¿De qué magia hablas? – Blender

+1

'(shiftPressed && charCode == 187)'. '187' es el código clave de la tecla' = ', ya que' shift + = '=' + '. Estoy un poco confundido acerca de lo que estás preguntando ... – Blender

3

esto es estúpido ... realmente no es una respuesta en absoluto. Te sugiero que hagas lo siguiente.

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

Y descubra los rangos de todas las claves y ejecútelo.

1

Este es el código modificado:

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

Es un trabajo. Javascript código clave permite al número y símbolo de suma única

<!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>

Gracias amigos

0

Aquí está el código. funciona bien con números y más + inicia sesión en los campos del teléfono. tendrá que implementar el código en la función de teclado. apunte a la id/clase del campo de teléfono particular y use la función de teclado.

//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

Utilizando la experiencia de mis colegas anteriores, escriba una función que me quede bien. Filtra todos excepto los números, flechas y retroceso. Tal vez sería útil para alguien.

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; 
} 
Cuestiones relacionadas