2012-06-22 10 views
14

quiero borrar la entrada especificada si el valor no es el número. la función funciona para una ID, pero quiero que funcione para múltiples. por supuesto puedo escribir la función varias veces pero no quiero hacer eso.jQuery, la misma función para múltiples identificadores

El siguiente código tiene efecto solo para la entrada con id "d". No sé cómo identificar otros identificadores. ¿Alguien puede ayudar?

<input id="d" /> 

<input id="d2" /> 

<input id="d3" /> 

<script type="text/javascript"> 

$('#d,d2,d3').keyup(function(){ 

if($('#d,d2,d3').val() != "") { 

    var value = $('#d,d2,d3').val().replace(/^\s\s*/, '').replace(/\s\s*$/, ''); 

    var intRegex = /^\d+$/; 

    if(intRegex.test(value)) {} 

    else { 


    $(this).val(''); 

    } 



} 

}); 

</script> 

Respuesta

27

En lugar de $('#d,d2,d3') uso $('#d, #d2, #d3') y para el caso de uso declaración $(this).val()

9

Puede use comienza con el selector en lugar de poniendo en múltiples identificadores de la siguiente manera:

$('[id^=d]') 

encima del selector trabajará para todos los elementos cuyas ID comenzar con d por ejemplo d1, d2, d3 y así sucesivamente.

Aquí es cómo el código debe ser (arreglando otros errores):

$('[id^=d]').keyup(function(){ 
if(this.value != "") { 
    var value = this.value.replace(/^\s\s*/, '').replace(/\s\s*$/, ''); 
    var intRegex = /^\d+$/; 
    if(intRegex.test(value)) {} 
    else { 
     this.value = ''; 
    } 
}  
}); 
+0

@loler: Ah bien fría – Sarfraz

+0

Esta es la respuesta correcta a la pregunta ...! Impresionante! –

4
$('input[id^=d]').keyup(function() { 
    var val = $.trim(this.value); // or $.trim($(this).val()) 
    if (val != "") { 
     var value = val.replace(/^\s\s*/, '').replace(/\s\s*$/, ''), 
      intRegex = /^\d+$/; 
      if (intRegex.test(value)) { 
       // do something 
      } else { 
       $(this).val(''); 
      } 
    } 
});​ 

[id^=d] es un comienzo con el selector que significa, id comienzo con d.

leer sobre jQuery start selector

4

Ha olvidado el # para d2 & d3. Y también un this.

$('#d,#d2,#d3').keyup(function(){ 

    if($(this).val() != "") { 

     var value = $(this).val().replace(/^\s\s*/, '').replace(/\s\s*$/, ''); 

     var intRegex = /^\d+$/; 

     if(intRegex.test(value)) {} 
     else { 
      $(this).val(''); 

     } 
    } 
}); 
4

Puede agregar atributo de clase

<input id="d" class="A"/> 
    <input id="d2" class="A"/> 
    <input id="d3" class="A"/> 

uso siguiente selector de clase por su nombre

$('.A').keyup 
Cuestiones relacionadas