我有3个文本框,我想检查是否放在一起它们都加起来大于空白。 什么是实现这一目标的最佳方法?
<asp:TextBox ID="tbDate" runat="server"></asp:TextBox>
<asp:TextBox ID="tbHour" runat="server"></asp:TextBox>
<asp:TextBox ID="tbMinutes" runat="server"></asp:TextBox>
<asp:CustomValidator ID="cvDateControlValidator" runat="server" ErrorMessage="Invalid Date"
ValidateEmptyText="True" ClientValidationFunction="validateDateOnClient" ControlToValidate="tbDate"
Display="Dynamic"></asp:CustomValidator>
<script type="text/javascript">
function validateDateOnClient(sender, args) {
if (args.Value.length > 0)
args.IsValid = false;
return args.IsValid;
}
</script>
一个建议是:
if (tbDate.value != '' || tbHour.value != '' || tbMinutes.value != '')
在执行客户端验证之前,我想确保tbDate,tbHour,tbMinutes一起大于空白。
答案 0 :(得分:2)
我认为你可以用一个CustomFieldValidator
来完成这个任务。
我认为你自己非常接近答案。我会像这样总结:
if (tbDate.value.length + tbHour.value.length + tbMinutes.value.length > 0)
答案 1 :(得分:1)
我会使用RequiredFieldValidator
<asp:RequiredFieldValidator id="RequiredFieldValidator2"
ControlToValidate="yourTextBox"
Display="Static"
ErrorMessage="*"
runat="server"/>
然后每个文本框都有一个Validator。因为你不需要任何javascript。因此,您无需在控件执行的许多页面上执行此操作。
有关详细信息,请参阅here
修改强>
或者您可以使用JQuery执行此操作。像这样:
function validateDateOnClient(sender, args) {
$('input[type=text]').each( function() {
if(($this).val().length==0) {
args.IsValid = false;
}
});
return args.IsValid;
}
这将循环页面上的所有文本框。
答案 2 :(得分:0)
document.getElementById('<%=tbDate.ClientID%>').value
...将允许您访问客户端的Text属性 - 这就是您所追求的吗?
使用此功能,您可以显然对检索到的字符串执行任何类型的检查。
编辑:我应该注意到我在这里做了一个假设,事实上,你已经熟悉了asp验证器,因为你已经使用过了 - 所以我提出了一个解决你的问题的javascript解决方案。但是,我建议你使用requiredfieldvalidators。
答案 3 :(得分:0)
如果您使用的是.NET 4,则可以执行此操作
(!string.IsNullOrWhiteSpace(tbDate.Text) || !string.IsNullOrWhiteSpace(tbHour.Text)
|| !string.IsNullOrWhiteSpace(tbMinutes.Text))
使用早期版本
(tbDate.Text.Trim().Length > 0 || tbHour.Text.Trim().Length > 0 ||
tbMinutes.Text.Trim().Length > 0)
这样就知道你是否只有一堆空格
答案 4 :(得分:0)
试试这个:
if(tbDate.value > 0 || tbHour.value > 0 || tbMinutes.value > 0)
{
}