Вопрос по asp.net, webforms, validation, jquery – Можете ли вы иметь пользовательскую проверку JavaScript для стандартных веб-форм ASP.NET?

16

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

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

Ваш Ответ

3   ответа
1

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

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

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

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

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

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

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

Ознакомьтесь с документациейВот а такжеВот.

Это то, как изменить поведение проверки, а не то, как изменить способ ее отображения.
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>
Да, мне нужно сделать это, не меняя его на Custom validator
И было бы досадно обращаться ко всем вам, валидаторам.
21

я сделал это. Я использовал Firebug, чтобы узнать функции JS Dot.Net, а затем похитил функции валидатора

Следующее будет применяться ко всем валидаторам и является чисто клиентской стороной. Я использую его, чтобы изменить способ отображения проверки 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');
    }
}
Мне нужно сделать что-то похожее на это (добавить класс после проверки), но вNicerPage_ClientValidate this находится в области видимости объекта окна. Для какой версии .NET это должно работать?
Вы должны опубликовать свои источники при вставке кода, и это просто показывает, как взломатьall validatio, а не просто определенный валидатор. Вы должны также упомянуть, что здесь используется jQuery, а не стандартный asp.net ajax. Вот оригинальная статья:ajaxprojects.com/ajax/tutorialdetails.php?itemid=362
Джефф, я просто хотел сказать, что я был поражен этим фрагментом. Я оставил соединение с удаленным рабочим столом, чтобы я мог использовать браузер, в который я вошел, просто чтобы сказать, насколько это круто. Я на самом деле искал это некоторое время. Спасибо! :)
Это код, который я использовал в проекте на работе, который я понял сам без этой статьи. ОП говорит, что хочет использовать jQuery. Иди и подожги кого-нибудь еще

Похожие вопросы