2010-09-04 7 views
0

J'ai une forme qui contient entre autres des entrées de texte qui contiennent des données arithmétiques (prix) Les éléments et leurs noms sont générés dynamiquement. Je voudrais seulement "trouver" des champs qui contiennent des valeurs arithmétiques basées sur leurs noms (ie un exemple de nom d'élément serait price_500_365 (à partir de price_PRODUCTID_ORDERID) Donc je veux trouver toutes les entrées de texte contenant "price" dans leurs noms ou id utilisant regexp et les résumer, je ne suis pas sûr de savoir comment faire Toutes les idéesRegexp: Comment puis-je trouver des champs de formulaire nommés avec une séquence de caractères spécifique dans un formulaire en utilisant javascript?

+0

Ne pouvez-vous pas modifier la génération de champ? La génération est-elle effectuée côté serveur? – strager

+0

Et, utilisez-vous des cadres? Je suppose "non" parce que vous avez ajouté le tag dhtml. – strager

+0

Hi, Non, son côté serveur généré, et pour rendre les champs un peu plus complexes sont rechargés en utilisant ajax chaque fois qu'un produit ou une spécification change dans le bon de commande, donc les noms des champs changent aussi. C'est pourquoi j'avais besoin de trouver tous les champs price_ *. – mspir

Répondre

2

vous pouvez parcourir les éléments du formulaire, comme celui-ci:

var form = document.getElementById("myForm"), sum = 0; 
for(var i=0; i<form.elements.length; i++) { 
    var e = form.elements[i]; 
    if(e.type === 'text' && /price/.test(e.name)) sum += parseFloat(e.value); 
} 
alert(sum); 

You can test it here, si vous n'avez pas strictement besoin des éléments <input>, vous devrez peut-être modifier la vérification if pour inclure/exclure plus d'éléments.

+0

Merci, fonctionne comme un charme! Je ne savais pas comment vérifier les noms, en essayant de travailler avec regexp. Je n'étais pas au courant de la méthode d'essai, j'ai appris quelque chose de nouveau aujourd'hui: o) – mspir

2

en utilisant jQuery, vous pouvez le faire comme ceci:..?

$('input[name*="price"]');

+2

Y compris jQuery pour cela est exagéré je crois, car c'est juste une boucle 'for'. * Trouver * les éléments est trivial, la sommation n'est pas rendue plus facile par jQuery IMO, ou beaucoup plus courte. Si l'auteur a * d'autres * situations améliorées par jQuery alors par tous les moyens, mais pour cette question, c'est une exagération massive. –

+0

J'ai jquery inclus dans le projet en effet. Une bonne explication pour la suggestion ci-dessus est ici aussi http://stackoverflow.com/questions/345194/regular-expression-matching-in-jquery (je viens de le trouver). Mais je regardais quelque chose comme la solution ci-dessous. J'ai marqué cette réponse comme utile, mais je devrai accepter celle ci-dessous. Merci les gars! – mspir