Vous voudrez probablement ajouter quelques attributs class
et/ou id
à vos entrées de sorte que ce code jouera bien s'il est déposé dans un contexte HTML plus large. Cependant, pour répondre à la question donnée:
$("input[type=text]").blur(function() {
var sum = 0;
$("input[type=text]").each(function() { // For each of the two inputs
sum += parseInt($(this).val()) // ... add its value to sum
});
$("div.sum").text(sum); // Update the div
});
Si vous entrez des nombres avec une virgule décimale, vous voudrez probablement utiliser parseFloat
plutôt que parseInt
.
MISE À JOUR: Si vos structures sont tous comme celui affiché, la meilleure façon de les relier les uns aux autres serait d'utiliser un attribut id
sur la table contenant, et la syntaxe du sélecteur de descendant. Ensuite, le code ressemblerait à ceci:
$("input[type=text]").blur(function() {
var parentId = $(this).parents('table').attr('id');
var sum = 0;
$(parentId +" input[type=text]").each(function() {
sum += parseInt($(this).val())
});
$(parentdId + " div.sum").text(sum);
});
MISE À JOUR DE NOUVEAU: D'accord, vous avez donc aucun moyen d'assigner ids à vos tables. C'est bon, nous pouvons toujours faire cela. Vous devrez utiliser les fonctions de parcours de jQuery parent()
et find()
au lieu de simples sélecteurs, c'est tout.
$("input[type=text]").blur(function() {
var parent = $(this).parents('table');
var sum = 0;
parent.find("input[type=text]").each(function() {
sum += parseInt($(this).val())
});
parent.find("div.sum").text(sum);
});
semble presque parfait, le problème est que j'ai beaucoup de ces constructions donc il y a deux de ces tableaux dans le document donc je besoin d'un moyen de le faire en garder à l'esprit que la table contient l'élément qui a changé – Markus
@Markus: Voir ma mise à jour pour savoir comment y remédier. –
mon problème est que j'écris ces tableaux dans une vue partical et je n'ai aucune valeur pour identifier les tables et je ne peux pas ajouter un compteur simple aussi ..: S – Markus