2013-06-10 1 views
1

Je suis nouveau à javascript (et jQuery) alors ours avec moi. Je souhaite que l'utilisateur puisse saisir un nombre dans une zone de texte et chaque fois que l'utilisateur saisit une autre valeur (touche, touche enfoncée, touche enfoncée), le code s'exécute et calcule la nouvelle valeur.jQuery KeyUp ne permettant pas plus de valeurs

est ici un jsFiddle

Mon problème est que la zone de texte ne me laisse pas entrer dans plus d'une valeur. Comment puis-je continuer à entrer plus de valeurs?

jQuery (1.9.1)

$(document).ready(function() { 
    $('.conv').keyup(function() { 
     var valx = parseFloat($(this).attr('data-val')); 
     var classes = parseInt($('.conv').length); 

     for (var i=1;classes;i++) { 
      var x = 'a' + i; 
      //alert(x); 
      var theval = document.getElementById(x); 
      var z = parseFloat($('#' + x).attr('data-val')); 
      //alert(z); 
      $('#' + x).val(z/valx); 
     if (i == classes) { 
     break; 
     } 
    } 
    }); 
}); 

Encore une fois ... voici un jsFiddle si vous souhaitez modifier

Répondre

0

Vous semblez même la valeur d'écraser de la zone de texte qui a généré l'événement ..

Remplacer

$('#' + x).val(z/valx); 

avec

$('#' + x).not(this).val(z/valx); 

EDIT

La raison est que vous lisez toujours la valeur de

var valx = parseFloat($(this).attr('data-val')); 

au lieu de

var valx = parseFloat($(this).val()); 

Check Fiddle

+0

Merci! qui aide. Comment puis-je faire en sorte que le code refasse les calculs lorsque je continue à taper des chiffres? Exemple: tapez "1", le code va calculer. Puis ajouter un "0" et le code ne pas enregistrer que le nouveau numéro est "10". – Sanya

+0

dans ce cas, vous pouvez vouloir 'change()' au lieu de 'keyup()' – pandavenger

+0

@Sanya .Keyup est parfaitement bien. Vérifiez éditer –