2008-09-24 3 views
16

У вас есть пользовательская проверка javascript на стороне клиента для стандартных валидаторов веб-форм ASP.NET?У вас есть пользовательская проверка JavaScript на стороне клиента для стандартных валидаторов веб-форм ASP.NET?

Например, используйте asp: RequiredFieldValidator, оставляя только код на стороне сервера, но реализуйте собственное уведомление клиента с помощью jQuery, чтобы выделить поле или цвет фона, например.

ответ

11

Стандарт CustomValidator имеет свойство ClientValidationFunction для этого:

<asp:CustomValidator ControlToValidate="Text1" 
        ClientValidationFunction="onValidate" /> 

<script type='text/javascript'> 
function onValidate(validatorSpan, eventArgs) 
{ eventArgs.IsValid = (eventArgs.Value.length > 0); 
    if (!eventArgs.IsValid) highlight(validatorSpan); 
} 
</script> 
1

Что вы можете сделать, это подключить в валидатор и назначить новый метод оценки, как это:

<script type="text/javascript"> 
     rfv.evaluationfunction = validator; 

     function validator(sender, e) { 
      alert('rawr'); 
     } 
    </script> 

ВРС это идентификатор моего требуемого поля валидатор. Вы должны сделать это внизу своей страницы, чтобы назначить ее после регистрации javascript для валидатора.

Его гораздо проще использовать CustomFieldValidator и назначить его свойство проверки на стороне клиента.

<asp:CustomValidator ControlToValidate="txtBox" ClientValidationFunction="onValidate" /> 

<script type='text/javascript'> 
function onValidate(sender, e) 
{ 
    alert('do validation'); 
} 
</script> 

Заканчивать документацию here и here.

+0

Это, как изменить поведение валидации, а не как изменить способ его отображения. – Geoff 2008-09-24 03:43:31

21

Да, я сделал это. Я использовал 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'); 
    } 
} 
+1

Вы должны размещать свои источники при вставке кода, и это просто показывает, как захватить * all * validatio, а не только определенный валидатор. Следует также упомянуть, что это использует jQuery, а не стандартный asp.net ajax. Это оригинальная статья: http://www.ajaxprojects.com/ajax/tutorialdetails.php?itemid=362 – sontek 2008-09-24 03:03:30

+21

Это код, который я использовал в проекте на работе, который я выяснил сам без этой статьи. OP говорит, что хочет использовать jQuery. Иди плачь кому-нибудь другому. – Geoff 2008-09-24 03:06:29

 Смежные вопросы

  • Нет связанных вопросов^_^