有没有可能使用标准的.Net字段验证器来更改发生错误的文本字段上的样式?
例如,如果我有一个需要填写的字段phonenumber,它应该在提交时在文本字段周围创建一个红色边框,如果该字段没有填充的话。
希望这可以用标准控件来完成,这样我就不需要使用例如jQuery验证插件等来重新编码了。
-Dofs
发布于 2013-01-21 21:52:30
您可以使用来自ASP.Net的本机组件来完成此操作:
在ASP页面中:
<asp:TextBox ID="TextBox1" runat="server"/>
<asp:CustomValidator ID="CustomValidator1" runat="server" OnServerValidate="ValidateTextBox1" ForeColor="Red" SetFocusOnError="true"></asp:CustomValidator>在后面的代码中:
protected void ValidateTextBox1(object source, ServerValidateEventArgs args)
{
if (TextBox1.Text == string.Empty)
{
args.IsValid = false;
TextBox1.Style.Add("border", "solid 1px red");
CustomValidator1.Text = "required";
}
else
args.IsValid = true;
}PS:按下按钮时,RequiredFieldValidator在CustomValidator之前激活。如果在同一页上有,则必须将其关闭或替换为CustomValidator。
或
你可以使用CSS和Javascript。
CSS类:
<style type="text/css">
body
{
font-family:Arial;
font-size:10pt;
}
.ErrorControl
{
background-color: #FBE3E4;
border: solid 1px Red;
}
</style>JavaScript函数:
<script type="text/javascript">
function WebForm_OnSubmit() {
if (typeof (ValidatorOnSubmit) == "function" && ValidatorOnSubmit() == false) {
for (var i in Page_Validators) {
try {
var control = document.getElementById(Page_Validators[i].controltovalidate);
if (!Page_Validators[i].isvalid) {
control.className = "ErrorControl";
} else {
control.className = "";
}
} catch (e) { }
}
return false;
}
return true;
}
</script>现在,验证器ASP.net:
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" ControlToValidate="TextBox1"
runat="server" ErrorMessage="Required"></asp:RequiredFieldValidator>或
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
<asp:CustomValidator ID="CustomValidator1" runat="server" ErrorMessage="Required"
ControlToValidate="TextBox2" ValidateEmptyText="true" ClientValidationFunction="Validate"></asp:CustomValidator>
<script type="text/javascript">
function Validate(sender, args) {
if (document.getElementById(sender.controltovalidate).value != "") {
args.IsValid = true;
} else {
args.IsValid = false;
}
}
</script>发布于 2010-01-15 19:02:15
您可以使用ajax工具包完成此操作,正如Lance Zhang on this page所解释的那样。
https://stackoverflow.com/questions/2070935
复制相似问题