简单设置:购物车以数据列表的形式。
标题有两个按钮:更新数量和删除所选项目
每个DataList Item都有(除其他外)一个id =“txtQty”的文本框,用于存储购物车项目的数量。
用户应该能够更改这些文本框中的值,然后单击标题中的“更新数量”按钮以一次保存所有更改。
我已经完成了实际保存的逻辑,但现在我要回去添加一些额外的验证。我希望从UpdateQuantities按钮的OnClientClick事件中调用单个JavaScript函数,然后迭代所有DataListItems,找到txtQty文本框,并确保它是有效的数字输入。
我有点难以找出解决这个问题的最佳方法。到目前为止,我唯一真正的想法是遍历表单元素并找到ID与“txtQty”匹配的任何内容(因为ASP.NET会自动重写id),然后验证该特定元素。这听起来不是最好的解决方案。那里有没有更好的想法?
答案 0 :(得分:1)
为什么不在DataGrid上放置验证器来检查qty是否是有效数字?到目前为止,这将是最简单的。
如果这不是解决方案,我会让所有那些txtQty文本框具有相同的css类。然后,您可以使用JQuery查找具有该类名的所有元素并循环遍历它们。这比循环遍历整个表单并检查元素的id是否在其id中包含'txtQty'要好得多。
另一种方法是使用一个隐藏字段,该字段包含要检查的文本框的所有ID。在添加文本框时,您将添加到此隐藏字段。然后打开id数组中的隐藏字段,找到那些ID。
答案 1 :(得分:1)
我最终使用了一些LongHorn的方法来获得我想要的结果。使用自定义验证器,我使用它的客户端验证功能来调用JS函数,该函数检查文本更改事件中的单个文本框。
这不是我理想的解决方案,但它很有用。在进行任何处理之前,我还对整个列表进行了服务器端验证。
答案 2 :(得分:0)
重复ID真的不是一件好事。您可以尝试将类分配给文本框 - “validate-quantity”会很好,因为您可以将多个类应用为验证规则。
<input type="textbox" class="validate-quantity validate-min" />
通过这种方式,您可以遍历表单以查找验证规则,而不是专门定位文本框。
答案 3 :(得分:0)
为什么不将验证作为属性添加到每个文本框的onchange事件中。在进行更改时,最好进行验证。
您可以添加验证控件或自行滚动。