我在网上搜索并没有找到任何有帮助的东西,所以我想在这里问。
我有一个简单的asp.net 2.0表单。
<form runat="server">
<asp:ValidationSummary ID="ValidationSummary1" runat="server" />
<asp:TextBox ID="txt1" runat="server" ValidationGroup="valGroup1"></asp:TextBox>
<asp:RequiredFieldValidator ControlToValidate="txt1" ValidationGroup="valGroup1" runat="server" Display="Dynamic" ID="val1" ErrorMessage="*"></asp:RequiredFieldValidator>
<asp:Button ID="btn1" runat="server" ValidationGroup="valGroup1" CausesValidation="true" Text="submit" />
</form>
我想要做的是在特定输入的验证失败时更改输入的样式。最好是添加一个类,而不是内联样式。
当javascript无法通过代码隐藏时,我可以这样做,但我想要做的是在javascript可用时也会发生同样的情况。
我知道ASP.NET会注入一个名为Page_Validators的全局js变量,该变量是页面上所有验证器跨度的数组。除了循环遍历所有这些之外,还有更简单的方法吗?
修改 的
我可以用以下方法做到这一点:
<script type="text/javascript">
function ValidateInputs() {
var validators = Page_Validators;
for (var i = 0; i < validators.length; i++) {
var validator = validators[i];
if (!validator.isvalid) {
document.getElementById(validator.controltovalidate).setAttribute("style", "border:solid 1px red;");
}
}
}
</script>
只是想知道是否有更好的方法?
我可以获得微软验证脚本来调用我的验证方法吗?或者我可以手动挂钩验证事件吗?
答案 0 :(得分:0)
这是一个非常好的方式;没有公共事件或其他东西可以利用,除非你想用自己的自定义事件(变得混乱)开始替换公共事件。
HTH。
答案 1 :(得分:0)
事实证明我的答案是我唯一能得到的答案!
<script type="text/javascript">
function ValidateInputs() {
Page_ClientValidate();//Validate the validators using microsofts validation
var validators = Page_Validators;
for (var i = 0; i < validators.length; i++) {
var validator = validators[i];
if (!validator.isvalid) {
document.getElementById(validator.controltovalidate).setAttribute("style", "border:solid 1px red;");
}
}
}
</script>
此外,在按钮上,将OnClientClick="ValidateInputs();"
设置为OnClientClick="ValidateInputs();return false;"