2012-06-22 32 views
14

Desidero cancellare l'input specificato se il valore non è il numero. la funzione funziona per un ID, ma voglio che funzioni per più. naturalmente posso scrivere la funzione più volte ma non voglio farlo.jQuery, stessa funzione per più identificativi

il seguente codice ha effetto solo per l'input con ID "d". Non so come identificare altri ID. qualcuno può aiutare?

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

risposta

27

Invece di $('#d,d2,d3') uso $('#d, #d2, #d3') e per l'se l'uso dichiarazione $(this).val()

9

Puoi utilizzare inizia con il selettore anziché mettendo in più ids simili:

$('[id^=d]') 

Sopra selettore funziona per tutti gli elementi i cui ID inizia con d es d1, d2, d3 e così via.

Ecco come il codice dovrebbe essere (fissa altri errori oltre):

$('[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 ok fresco – Sarfraz

+0

Questa è la risposta corretta alla domanda ...! Stupendo! –

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] è un inizio con il selettore che significa, id inizio con d.

leggere su jQuery start selector

4

Hai dimenticato la # per d2 & d3. E anche uno 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

È possibile aggiungere attributo di classe

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

uso seguente selettore dal nome della classe

$('.A').keyup 
Problemi correlati