我使用asp和bootstrap网格。
假设我的文本框采用col-x-11,所需的字段验证器采用col-x-1(仅包含*),并且显示属性设置为“动态”..
如果此验证器不可见,则其列保持占用状态。 如果验证器不可见,我希望文本框也占据此列..但如果验证器可见,则会再次使用它的列。
有办法吗?
答案 0 :(得分:1)
一种方法是使用CustomValidator
并使用其指定客户端函数的功能来修改文本框的显示方式。
<强>标记强>
<div class="row">
<div class="col-xs-12"><asp:TextBox ID="txtName" runat="server" CssClass="form-control" /></div>
<asp:CustomValidator ID="valName" runat="server" Text="*" Display="Dynamic" CssClass="col-xs-1"
ClientValidationFunction="valName_ClientValidate"
OnServerValidate="valName_ServerValidate" />
</div>
<强>的JavaScript 强>
function valName_ClientValidate(sender, args) {
var $textbox = $('#<%= txtName.ClientID %>');
if ($textbox.val() != '') {
args.IsValid = true;
$textbox.parent().removeClass('col-xs-11').addClass('col-xs-12');
} else {
args.IsValid = false;
$textbox.parent().removeClass('col-xs-12').addClass('col-xs-11');
}
}
注意:在使用Bootstrap时,可以使用jQuery库。
<强> C#强>
protected void valName_ServerValidate(object source, ServerValidateEventArgs args)
{
args.IsValid = !String.IsNullOrEmpty(txtName.Text);
}