A continuación se muestra mi código de JavaScript que permite solo alfabetos al ingresar si ingresamos números y algunos caracteres especiales, no los acepta al ingresar solo esto funciona bien, pero este código de JavaScript debe permitir números, espacio también junto con alfabetos, ¿cómo puedo hacer esto? Por favor, ayúdame

<script language="Javascript" type="text/javascript">

         function onlyAlphabets(e, t) {
             try {
                 if (window.event) {
                     var charCode = window.event.keyCode;
                 }
                 else if (e) {
                     var charCode = e.which;
                 }
                 else { return true; }
                 if ((charCode > 64 && charCode < 91) || (charCode > 96 && charCode < 123) || charCode == 32)
                     return true;
                 else
                     return false;
             }
             catch (err) {
                 alert(err.Description);
             }
         }

    </script> 
<asp:TextBox ID="txtname" runat="server" onkeypress="return onlyAlphabets(event,this);"></asp:TextBox>
3
user6382527 7 jun. 2016 a las 17:14

3 respuestas

La mejor respuesta

Probablemente haría algo similar a lo que se describe aquí, mientras agrego la inclusión de espacio deseada: La mejor forma de verificación alfanumérica en Javascript

Por ejemplo, mira este fragmento:

function allowAlphaNumericSpace(e) {
  var code = ('charCode' in e) ? e.charCode : e.keyCode;
  if (!(code == 32) && // space
    !(code > 47 && code < 58) && // numeric (0-9)
    !(code > 64 && code < 91) && // upper alpha (A-Z)
    !(code > 96 && code < 123)) { // lower alpha (a-z)
    e.preventDefault();
  }
}
<input type="text" onkeypress="allowAlphaNumericSpace(event)" />

EDITAR: según su comentario, mi solución rápida y sucia es la siguiente, aunque estoy seguro de que debe existir una mejor opción ... Tome nota del cambio de "onkeypress" a "onkeyup" para asegurarse de que el valor se actualice después de Se inserta el nuevo personaje.

function allowAlphaNumericSpace(thisInput) {
  thisInput.value = thisInput.value.split(/[^a-zA-Z0-9 ]/).join('');
}
<input type="text" onkeyup="allowAlphaNumericSpace(this)" />
2
Community 23 may. 2017 a las 12:00

Puede usar regex para probar su entrada, con algo como esto:

var regexp = new RegExp(/^[a-zA-Z0-9 ]+$/);
var str="sqdqsd qsd125";
var str2="sqdqsdqsd12;5";
console.log(regexp.test(str));
console.log(regexp.test(str2));

https://jsfiddle.net/Tintin37/7Lj7r9zp/1/

EDITAR

Agregué un pequeño fragmento;)

 function onlyAlphabets(e, t) {
   var regexp = new RegExp(/^[a-zA-Z0-9 ]*$/);
   console.log(regexp.test(t.value));
   return regexp.test(t.value);
 }
<input type="text" onkeyup="return onlyAlphabets(event,this);" />

EDIT2

Con el comportamiento deseado;)

 function onlyAlphabets(e, t) {
   var regexp = new RegExp(/^[a-zA-Z0-9 ]*$/);
   if (window.event) {
     keynum = e.keyCode;
   } else if (e.which) {
     keynum = e.which;
   }
   var test = regexp.test(String.fromCharCode(keynum));
   return test;

 }
<input type="text" onkeypress="return onlyAlphabets(event,this);" />
2
Quentin Roger 7 jun. 2016 a las 14:45

La razón por la cual su código no aceptará números es porque los números también tienen su propio código de caracteres. El código de caracteres para 1, por ejemplo, es 48. Para incluir números, debe incluir esto en su declaración if:

(charCode >= 48 && charcode <= 57)

No estoy seguro de por qué los espacios no funcionan, ¡pero mira si lo anterior ayuda!

0
sahilkmr78 7 jun. 2016 a las 14:26