您可以为标准的ASP.NET表单验证器提供自定义的客户端javascript验证吗?
例如,使用asp:RequiredFieldValidator,让服务器端代码保持不变,但是使用jQuery来实现您自己的客户端通知,以突出显示字段或背景颜色。
发布于 2008-09-24 02:56:47
是的,我已经这样做了。我使用Firebug找出Dot.Net JS函数,然后劫持验证器函数
下面的代码将应用于所有验证器,并且是纯客户端的。我使用它来更改ASP.Net验证的显示方式,而不是实际执行验证的方式。它必须包装在$(document).ready()中,以确保它覆盖了原始的ASP.net验证。
/**
* Re-assigns a couple of the ASP.NET validation JS functions to
* provide a more flexible approach
*/
function UpgradeASPNETValidation(){
// Hi-jack the ASP.NET error display only if required
if (typeof(Page_ClientValidate) != "undefined") {
ValidatorUpdateDisplay = NicerValidatorUpdateDisplay;
AspPage_ClientValidate = Page_ClientValidate;
Page_ClientValidate = NicerPage_ClientValidate;
}
}
/**
* Extends the classic ASP.NET validation to add a class to the parent span when invalid
*/
function NicerValidatorUpdateDisplay(val){
if (val.isvalid){
// do custom removing
$(val).fadeOut('slow');
} else {
// do custom show
$(val).fadeIn('slow');
}
}
/**
* Extends classic ASP.NET validation to include parent element styling
*/
function NicerPage_ClientValidate(validationGroup){
var valid = AspPage_ClientValidate(validationGroup);
if (!valid){
// do custom styling etc
// I added a background colour to the parent object
$(this).parent().addClass('invalidField');
}
}
发布于 2008-09-24 02:47:55
您可以做的是挂钩到验证器并分配一个新的evaluate方法,如下所示:
<script type="text/javascript">
rfv.evaluationfunction = validator;
function validator(sender, e) {
alert('rawr');
}
</script>
rfv是我所需的字段验证器的ID。您必须在页面的底部执行此操作,以便在注册验证器的javascript之后对其进行分配。
只需使用CustomFieldValidator并分配它的客户端验证属性就容易多了。
<asp:CustomValidator ControlToValidate="txtBox" ClientValidationFunction="onValidate" />
<script type='text/javascript'>
function onValidate(sender, e)
{
alert('do validation');
}
</script>
https://stackoverflow.com/questions/124682
复制相似问题