Bonjour,
Etant nouveau en javascript et ne sachant pas quoi chercher exactement, j'espère que vous pourrez m'aider parce que je n'ai pas réussi à trouver ce qui pourrait m'aider jusqu'à maintenant :/ .
Voilà le problème que je rencontre actuellement :
J'ai crée un projet sous Ruby on Rails et utilise javascript pour créer/détruire des champs à la volée. Cependant, je n'arrive pas à effectuer de calculs sur les champs . Je pense que c'est surement parce que je n'arrive pas à faire passer les attributs dans la fonction.

Voici le code de mon HTML.erb :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
<div class="fields">
  <p>
  <%= f.label :description, "Decription" %>
  <%= f.text_field :description %> </br>
  <%= f.label :TVA,"TVA" %>
  <%= f.text_field :TVA  %>  </br>
 
  Prix : <input type="text" size="25" name="Prix" id="prix" onselect="calcul(this)">  </br>
  Quantite : <input type="text" size="25" name="Quantite" id="quantite" onselect="calcul(this)">  </br>
  Montant HT: <input type="text" size="25" name="Montant HT" id="montant" onselect="calcul(this)"> </br>
 
  <%= f.label :type,"Type" %>
  <%= f.text_field :type %>  </br>
  <%= f.label :ref_prod_serv, "Reference produit" %>
  <%= f.text_field :ref_prod_serv%>  </br>
  <%= link_to_remove_fields "remove", f %><br />
        </p>
 </div>
et mon applications :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 
function remove_fields(link) {
    $(link).previous("input[type=hidden]").value = "1";
    $(link).up(".fields").hide();
}
 
function add_fields(link, association, content) {
    var new_id = new Date().getTime();
    var regexp = new RegExp("new_" + association, "g")
    $(link).up().insert({
        before: content.replace(regexp, new_id)
    });
 
function calcul(f) {
 
        var qte = f.getElementById('quantite').getValue()  ;
        var prix = f.getElementById('prix').getValue()      ;
 
        if(qte=='')
        qte = 0;
        if(prix == '')
        prix = 0;
 
        f.getElementById('montant').setValue(qte * prix) ;
 
        }
}
Il n'y a pas d'erreurs lors de l'exécution mais il ne se passe rien ...
J'ai bien essayé avec un document.getElementBy... mais rien :/ d'où les fantaisies du code avec le this ...
Donc voilà si quelqu'un pouvait m'aider ça serait sympa