我想知道是否有一种方法可以将自定义函数连接到 asp 网络客户端验证事件,所以每次验证被任何控件触发时,我都可以在客户端 UI 上做一些魔术
我正在寻找一种通用方法来拦截页面 onvalidating 事件,而无需在导致回发的每个控件上设置它
谢谢大家
编辑:
我最终得到了这个函数:(感谢@Kirk)
$(document).ready(function () {
$('form').submit(function () {
if (typeof Page_Validators != 'undefined') {
var errors = '';
$.each(Page_Validators, function () {
if (!this.isvalid) {
errors += this.errormessage + '\r\n';
}
});
if (errors.length > 0) {
Alert(errors);
}
}
});
});
最佳答案
要执行类似的操作,您可以在提交按钮上放置一个 OnClientClick 事件或仅在一般表单提交事件上放置。
然后您可以将客户端验证对象模型
与验证器控件一起使用。这实际上允许您验证您设置的每个验证控件。您可以从与页面相关的客户端检查几个值,请参阅 http://msdn.microsoft.com/en-us/library/yb52a4x0.aspx#ClientSideValidation_ClientValidationObjectModel .
您使用 isvalid
属性引用每个控件。例如
<asp:Label id="lblZip" runat="server" Text="Zip Code:" />
<asp:TextBox id="txtZip" runat="server" /></asp:TextBox>
<asp:RegularExpressionValidator id="valZip" runat="server"
ControlToValidate="txtZip"
ErrorMessage="Invalid Zip Code"
ValidationExpression="[0-9]{5}" />
<script language=javascript>
// Call this function to do something
function txtZipOnChange() {
// Do nothing if client validation is not active
if (typeof(Page_Validators) == "undefined") return;
// Change the color of the label
lblZip.style.color = valZip.isvalid ? "Black" : "Red";
}
</script>
您还可以使用客户端函数 Page_Validators
获取页面上的验证器数组。您还可以使用一些其他功能。
您还可以使用 ValidatorValidate(val)
客户端函数来强制单独检查每个验证器,以及 ValidatorEnable(val, enable)
来启用或禁用验证器按照您的逻辑要求。
看看http://msdn.microsoft.com/en-us/library/aa479045.aspx#aspplusvalid_clientside了解更多详情。
希望这能让你到达你需要去的地方。如果没有,请随时询问。
之前的评论
您可以使用 onClientClick
并附加一个 JavaScript 函数。 http://msdn.microsoft.com/en-us/library/7ytf5t7k.aspx
如果你想使用 jQuery,你可以使用 ClientIDMode
你可以更容易地找出控件 ID。
关于javascript - asp 网络客户端验证的验证事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7382849/