2012-02-16 15 views
42

Ho qualche problema con un'istruzione if. Voglio impostare num a 0 di NaN:jQuery Se il valore è NaN

$('input').keyup(function() { 

var tal = $(this).val(); 
var num = $(this).data('boks'); 
if(isNaN(tal)) { 
var tal = 0; 
} 
}); 
+0

Quindi fallo. Attualmente stai settando 'tal' a' 0'. Sostituisci 'tal' con' num'. –

+0

Pazzo quante visualizzazioni ha avuto questa domanda .. –

+0

Per tutti gli utenti ... vedi http://stackoverflow.com/questions/8012807/isnumeric-vs-isnan, ad esempio US $ .isNumeric() !!! –

risposta

99

È necessario assegnare il valore a $(this):

$('input').keyup(function() { 

var tal = $(this).val(); 
var num = $(this).data('boks'); 
if(isNaN(tal)) { 
var tal = 0; 
} 
$(this).data('boks', tal); 
}); 

ben scritto:

$('input').keyup(function() { 
    var eThis = $(this); 
    var eVal = (isNaN(eThis.val())) ? 0 : eThis.val(); 
    eThis.data('boks', eVal); 
}); 
+0

eThis.val() è una stringa, 0 è un numero. Inoltre stai usando l'isNaN globale che è diverso dalla pratica migliore Number.isNaN (e il suo rispettivo polyfil da 1 liner). https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isNaN – fullstacklife

28

Se si desidera sostituire la NaN con 0, scrivi questo:

var tal = parseInt($(this).val()) || 0; 
Problemi correlati