1

简单设置:数据列表形式的购物车。

标题有两个按钮:更新数量和删除所选项目

每个 DataList 项目(除其他外)都有一个 id="txtQty" 的文本框,用于存储购物车项目的数量。

用户应该能够更改这些文本框中的值,然后点击标题中的更新数量按钮以一次保存所有更改。

我已经完成了实际保存的逻辑,但现在我要回去添加一些额外的验证。我希望从 UpdateQuantities 按钮的 OnClientClick 事件中调用单个 JavaScript 函数,然后该函数将遍历所有 DataListItems,找到 txtQty 文本框,并确保它是有效的数字输入。

我很难找出解决这个问题的最佳方法。到目前为止,我唯一真正的想法是遍历表单元素并找到任何具有与“txtQty”匹配的 id 的内容(因为 ASP.NET 会自动重写 id),然后验证该特定元素。这听起来不是最好的解决方案。有没有更好的想法?

4

4 回答 4

1

为什么不在 DataGrid 上放置一个验证器来检查数量是否是有效数字?这将是迄今为止最简单的。

如果这不是解决方案,我会让所有这些 txtQty 文本框都具有相同的 css 类。然后,您可以使用 JQuery 查找具有该类名的所有元素并遍历它们。这比遍历整个表单并检查元素的 id 是否在其 id 中包含“txtQty”要好得多。

另一种方法是有一个隐藏字段,其中包含您要检查的文本框的所有 ID。您将在添加文本框时添加到此隐藏字段。然后只需打破 id 数组中的隐藏字段,并找到那些 id。

于 2009-05-14T14:14:26.757 回答
1

我最终使用了一些 LongHorn 的方法来获得我想要的结果。使用自定义验证器,我使用它的客户端验证功能来调用一个 JS 函数,该函数检查文本更改事件中的单个文本框。

这不是我理想的解决方案,但它很有用。在进行任何处理之前,我还会对整个列表进行服务器端验证,以防万一。

于 2009-05-15T13:48:24.860 回答
0

重复的身份证真的不是一件好事。您可以尝试为文本框分配一个类 - “验证数量”会很好,因为您可以应用多个类作为验证规则。

<input type="textbox" class="validate-quantity validate-min" />

这样,您可以遍历表单以查找您的验证规则,而不是针对特定的文本框。

于 2009-05-14T14:17:30.163 回答
0

为什么不将验证添加为每个文本框的 onchange 事件的属性。当他们进行更改时,您最好进行验证。

您可以添加验证控件或滚动您自己的控件。

于 2009-05-15T13:58:12.653 回答