2010-01-11 7 views
0

J'ai deux zone de texte en html à savoir:Comment utiliser onchange en HTML

<input type="text" value="" id="a" name="a" /> 
<input type="text" value="" readonly="true" id="b" name="b" /> 

Maintenant, si j'entrer un nombre dans id élément « a » alors le produit du nombre inséré par 2 sera apparaître dans ID de l'élément "b".

Comme: Alors im tapant un nombre laisser dire 11 dans l'élément « a » puis en même temps 11 * 2 à savoir: 22 apparaît dans l'élément « b » et si entrer backspace ou supprimer un numéro sur la le même changement de temps apparaîtra dans l'élément "b".

Pour obtenir mon résultat recherché je crée une fonction comme

onchange = function totalAmount() 
{ 
    var value = $("#a").val(); 

    if ((value > 0) && (value != "")) 
    { 
     $("input:text[name=b]").val(2 * value); 
    } 
    else 
    { 
     $("input:text[name=getCredit]").val(""); 
    } 
}; 

Il 80% de remplir mon obligation car il fera le changement dans l'élément « b » si je clique sur un été après insérer un numéro.

+1

Quelle est votre question? –

+0

Je suppose que la question est: "comment faire pour que la sortie apparaisse quand une pression de touche se produit plutôt que lorsque le focus change?" –

+0

Vous pourriez trouver cela utile: http://docs.jquery.com/Events/keypress –

Répondre

1

Je vois que vous utilisez jQuery. Vous pouvez lier à l'événement change de la zone de texte:

$('input:text[name=a]').change(function() { 
    // invoked when the value of input name="a" changes 
    // get the new value 
    var value = $(this).val(); 
    // update the value of input name="b" 
    $('input:text[name=b]').val(2 * value); 
}); 

Cet événement sera soulevé lorsque l'entrée perd le focus. Vous pouvez également jeter un oeil à keypress et keyup événements.

+0

N'est-ce pas ce qu'il fait déjà? (Bien qu'il doive regarder 'keypress' et' keyup' je pense.) –

+0

même $ ("entrée: texte [nom = a]"). Change (function() { \t var value = $ (this) .val() \t $ ('entrée: texte [nom = b]') .val (valeur 2 *); }); fait la même chose que j'avais fait. –

+0

J'ai également essayé $ ("input: text [nom = a]"). Keypress (function() { var valeur = $ (this) .val(); if ((valeur> 0) && (valeur! = "")) { $ (. 'entrée: texte [name = b]) val (2 * valeur); } autre { $ ("entrée: texte [name = a]"). val (""); $ ("entrée: texte [nom = b]") .val ("0"); } }); Mais lors de la première pression sur une touche, la valeur Null est prise. –

0

Si vous voulez un rappel à chaque pression de touche, vous pouvez utiliser l'attribut onKeyPress.

(Si vous utilisez une bibliothèque comme JQuery/prototype/etc il y a probablement une bonne façon d'observer un champ à l'aide de la bibliothèque)

1

Je pense que l'aide de l'événement onkeyup pourrait aider

<input type="text" value="" id="a" name="a" onkeyup="calcTotalAmount()" /> 
<input type="text" value="" readonly="true" id="b" name="b" /> 

<script> 

    function calcTotalAmount() { 

     var a = document.getElementById("a"); 
     var b = document.getElementById("b"); 

     if (!isNaN(a.value)) { 
      b.value = a.value * 2; 
     } 
    } 

</script> 

Pourquoi onkeyup?

événement se déclenche onKeyDown lorsque la touche est enfoncée, événement se déclenche onkeyup lorsque la touche est relâchée et l'événement onkeypress feux si le onkeydown est suivi par onkeyup,

et dans le temps de onkeydown le champ de saisie ne contiennent pas la valeur encore.

Questions connexes