いくつかのプロパティを持つ JavaScript オブジェクトがあります。オブジェクトには、オブジェクトの 2 つのプロパティの計算結果を返すインスタンス メソッドも含まれています。
新しい Jquery .link() プラグイン (http://api.jquery.com/link/) を使用して、フォームまたはオブジェクトのいずれかが更新されます。
これは、フォーム要素の 1 つを除いてすべて機能しています。フォーム要素には、オブジェクトのインスタンス メソッドの結果が含まれている必要がありますが、更新されることはありません。
Discrepancy の値を手動でチェックするボタンをフォームに配置しましたが、これは機能しますが、jquery リンク プラグインは入力要素を自動的に入力しませんが、オブジェクト プロパティにリンクされた入力要素を入力しています。すべての要素には id 属性と name 属性があります。
誰が私が間違っているのか教えてもらえますか?
私の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>