我想知道是否有办法将自定义函数连接到asp net客户端验证事件,因此每次验证都被任何控件触发时我都可以在客户端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);
}
}
});
});
答案 0 :(得分:2)
要做一些事情,你可以在提交按钮或只是一般表单提交事件上放置一个OnClientClick事件。
然后,您可以将Client Validation Object Model
与验证器控件一起使用。这实际上允许您验证您设置的每个验证控件。您可以从客户端查看与页面相关的一些值,请参阅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。
答案 1 :(得分:1)
//Page_Validators is an array of validation controls in the page.
if (Page_Validators != undefined && Page_Validators != null)
{
//Looping through the whole validation collection.
for(var i=0; i<Page_Validators.length; i++)
{
ValidatorEnable(Page_Validators[i]);
//if condition to check whether the validation was successfull or not.
if (!Page_Validators[i].isvalid)
{
break;
}
}
}
//if condition to check whether the page was validated successfully.
if(Page_IsValid)
{
alert('Success');
}
else
{
alert('Failure');
}
请注意this page底部的最后一个代码示例。