我正在创建发票申请,在用户可以输入订单项的部分中,某些字段将包括:数量,价格,扩展价格,描述等。
如果用户在任何字段中输入内容,则需要相应的字段,但如果没有数据输入任何字段,则相应字段中不需要任何内容。如果不做一堆if语句,这样做的有效而干净的方法是什么?
我想这就像在只有一个文本框有文本的情况下进行验证一样。
答案 0 :(得分:3)
您可以在CustomValidator的ServerValidate事件中尝试类似的操作。
// test for all textboxes having some text in them...
e.IsValid = (from TextBox c in this.Controls
where c is TextBox
select c).All(tb => !string.IsNullOrEmpty(tb.Text));
可能需要一些修补才能做到 - 但你明白了。相应更改以测试所有文本框是否为空白。
您还可以在CustomValidator
中使用jQuery进行客户端验证function clientValidate(sender, e) {
// get array of textboxes with a common css class
var textBoxes = $("#SomeCssSelector input").val();
// loop here to test for having text or no text.
e.IsValid = ... ;
}
答案 1 :(得分:2)
您可以创建TextBox数组并存储对数组中所有相关文本框的引用。当你需要时,你可以在for循环中迭代数组,寻找带有值的第一个项目。一旦找到具有值的值,您就会知道该数组中的所有其他项也需要值。
此外,如果您有其他相关文本框组,则可以创建其他数组以帮助将它们分组。
答案 2 :(得分:0)
如果这是ASP.NET,有几种方法。
对于Windows窗体,也使用控件验证器,或者您可以使用传递控件数组的简单函数。如果数组中的任何项目已填满,那么它需要通过返回未填充的字段等来填充所有项目。