2012-01-28 10 views
5

quiero una validación de Javascript que permite un máximo de 3 comas en un campo de texto de usuario que introduzca un número o texto en formatovalidación Javascript para permitir el máximo de 3 comas

123,456,789,0000

significa 3 comas (,) están permitidos, podría haber cualquier cantidad de dígitos/letras entre comas. El usuario puede optar por ingresar a sólo 2 comas es decir, 3 valores, pero el número máximo de comas que se permitiría son 3 para, por ejemplo a, bb, ddddd, eeeee (4 etiquetas) a, cc, bbbbb (3 etiquetas)

Lo que intento lograr es que el usuario ingrese solo 4 etiquetas separadas por comas, asegurándose de que el usuario no pueda inundar el artículo con 100 de etiquetas

+0

[¿Qué has intentado hasta ahora ??] (http: // mattgemmell.com/2008/12/08/what-have-you-tried/) –

Respuesta

5
var txt = '123,456,789,0000'; 
if(/^([^,]*,){0,3}[^,]*$/.test(txt)){ 
    // good 
}else{ 
    // bad 
} 

cambio del * a un + si usted quiere asegurarse de que no hay dos comas en una fila, por ejemplo: 12,,345

+0

gracias mucho ... realmente me ayudó mucho. –

+0

Esta validación funciona perfectamente bien, pero tengo una duda, quiero asegurarme de que el usuario no pueda ingresar más de 3 comas en el cuadro de entrada, es decir, si un usuario ingresó 3 comas, el usuario no podrá ingresar 4 coma. Espero, me estoy dejando claro. –

+2

Esto hace eso. Coincide con "Cualquier coma no seguido de una coma" 3 veces. El único lugar donde se permite una coma es en '{0,3}' que no coincidirá más de 3 veces –

0

Si tiene control en el servidor, le sugiero que haga la validación allí.

Porque si intentas hacer la validación en el cliente usando el script java, se puede eludir apagando el script java o usando la extensión FireBug de Firefox manipulando o ejecutando manualmente una solicitud, pasando por alto tu validación del script java en total.

Pero si realmente todavía quiere hacer algún tipo de validación de JavaScript, puede hacer algo como lo siguiente:

Dado este campo de entrada <input id="txtInput" type="text" />

Usted puede enlazar un evento keyup (prestar atención a personas que intentan pegar desde el portapapeles, keyup no cogerá que si lo hacen a través del menú contextual)

$('#txtInput').keyup(function(){ 
    //This splits up the string value of the text box into an array 
    //wherever a coma appears 
    var tags = $(this).val().split(','); 

    //These would be your tags, without the coma, count them to find out how many 
    //the user tried to enter. 
    if (tags.length > 4) 
     alert('there is more than 4 tags'); 
}); 

Por supuesto, esto es solo un ejemplo, pero se puede adaptar la idea a sus necesidades. No tiene que vincular esto al evento keyup, puede vincular esto a un evento de clic en el botón Enviar o algo, todo depende de sus necesidades.

Cuestiones relacionadas