J'ai un objet javascript avec plusieurs propriétés. L'objet contient également une méthode d'instance qui renvoie le résultat d'un calcul sur deux des propriétés de l'objet. J'utilise le nouveau plugin JQuery .link() (http://api.jquery.com/link/), pour mettre à jour l'interface utilisateur et les éléments de formulaire avec les valeurs de propriété d'objet et vice versa, chaque fois que le formulaire ou l'objet est mis à jour.jQuery Datalink ne fonctionne pas avec les méthodes objet
Tout cela fonctionne à l'exception de l'un des éléments de formulaire, qui doit contenir le résultat de la méthode d'instance de l'objet mais ne sera jamais mis à jour.
J'ai mis un bouton sur le formulaire pour vérifier manuellement la valeur de Discrepancy, et cela fonctionne mais le plugin jquery link ne remplit pas les éléments d'entrée automatiquement, bien qu'il remplisse les éléments d'entrée liés aux propriétés de l'objet. Tous les éléments ont un identifiant et un nom. Est-ce que quelqu'un peut me dire où je me trompe?
Mon javascript:
<script>
function Product() {
this.InStock = 0;
this.Ordered = 0;
}
// object's instance method
Product.prototype.Discrepancy = ComputeDiscrepancy;
function ComputeDiscrepancy() {
return this.InStock - this.Ordered;
}
$(document).ready(function() {
var products = new Array();
products[0] = new Product();
products[1] = new Product();
$("form").link(products[0], {
InStock: "product0_InStock",
Ordered: "product0_Ordered",
Discrepancy: "product0_Discrepancy"
});
$("form").link(products[1], {
InStock: "product1_InStock",
Ordered: "product1_Ordered",
Discrepancy: "product1_Discrepancy"
});
// button for me to manually check discrepancy method works
$("#checkData").click(function() {
alert(products[0].InStock);
$("#product0_Discrepancy").val(products[0].Discrepancy());
});
}); </script>
HTML:
<table>
<tr>
<th></th><th>Product 1</th><th>Product 2</th>
</tr>
<tr>
<td> In Stock</td>
<td><input id="product0_InStock" name="product0_InStock"/></td>
<td><input id="product1_InStock" name="product1_InStock"/></td>
</tr>
<tr>
<td>Ordered</td>
<td><input id="product0_Ordered" name="product0_Ordered"/></td>
<td><input id="product1_Ordered" name="product1_Ordered"/></td>
</tr>
<tr>
<td>Discrepancy</td>
<td><input id="product0_Discrepancy" name="product0_Discrepancy"/></td>
<td><input id="product1_Discrepancy" name="product1_Discrepancy"/></td>
</tr>
</table>
Je ne vois pas un élément de forme partout - est-il absent de la page, ou tout simplement omis de votre exemple? –
C'est dans la page, j'ai juste omis de mon exemple. – Robini