忘记使用html表单提交您的数据。你的数据源直接连接到你的JavaScript,所以你可以跳过回发和代码隐藏的东西。为了简单起见,我会使用jQuery,但您也可以使用原生JavaScript来完成此操作。如果你决定学习和使用它,那么jQuery是有据可查的,如果你问我,值得花时间学习。
这个例子应该有助于让你开始,根据需要随意编辑和评论:
的Html
<fieldset class="stock-control">
<legend>Edit Stock Amount</legend>
<label>ID:</label>
<input type="text" id="txt-id">
<label>Amount:</label>
<input type="text" id="txt-change"><br />
<input type="button" id="btn-add" value="Add">
<input type="button" id="btn-sub" value="Subtract">
<input type="button" id="btn-set" value="Set">
<br />
<label>In stock: </label><span id="lbl-total"></span>
</fieldset>
<fieldset class="stock-control">
<legend>Edit Stock Amount</legend>
<label>ID:</label>
<input type="text" class="txt-id">
<label>Amount:</label>
<input type="text" class="txt-change"><br />
<input type="button" class="btn-add" value="Add">
<input type="button" class="btn-sub" value="Subtract">
<input type="button" class="btn-set" value="Set">
<br />
<label>In stock: </label><span class="lbl-total"></span>
</fieldset>
的Javascript
// Your code
$(function() {
$('.stock-control').each(function() {
var $control = $(this);
var $id = $control.find('.txt-id');
var $amount = $control.find('.txt-amount');
var $total = $control.find('.lbl-total');
function RenderAmount() {
$total.text(StockRecorder.GetAmount($id.val()));
};
$('.btn-add').click(function() {
var stock = parseInt($total.text()) + parseInt($amount.val());
StockRecorder.Update($id.val(), stock);
RenderAmount();
});
$('.btn-sub').click(function() {
var stock = parseInt($total.text()) - parseInt($amount.val());
StockRecorder.Update($id.val(), stock);
RenderAmount();
});
$('.btn-set').click(function() {
StockRecorder.Update($id.val(), parseInt($amount.val()));
RenderAmount();
});
// Initialize
RenderAmount();
});
});
注意:你会想要一个按钮或ev如果在ID文本框中输入/更改了ID,则会调用RenderAmount()函数。在我的例子中,我假装它已经填满了。
顺便说一句,看起来像一个有趣的项目,你已经得到了你的手。好好享受! :)
来源
2012-10-17 18:43:47
Roy
如果此表单显示在页面上的多个位置,该怎么办?我应该使用自定义类吗? –
如果需要,您可以为它创建一个类,但在我看来,它取决于项目的大小和代码的可维护性。我更新了代码以在单个页面上处理“stock-control”元素的多个实例。每个使用jQuery来包装每个控件,并使用这个对控件的引用来绑定控件的每个实例的按钮和输入框。 – Roy