Проверка jQuery в ASP.NET и AngularJS

#jquery #asp.net #angularjs #jquery-validate

#jquery #asp.net #angularjs #jquery-проверка

Вопрос:

Я хочу выполнить проверку jQuery в форме перед отправкой в AJAX. Здесь следует отметить, что мое приложение находится в ASP.NET Реализованы веб-формы с главными страницами, и у меня уже есть форма с runat=»server» на моей главной странице.

На моей странице содержимого форма выглядит так

 <form class="form-horizontal form-bordered" id="PageForm">
                    <div class="form-group">
                        <label for="DesignationName" class="col-lg-4 col-sm-2 control-label">Designation Name</label>
                        <div class="col-lg-8">
                            <input id="DesignationName" ng-model="newDesignation.DesignationName" type = "text" class="form-control"  placeholder="" >
                        </div>
                    </div>


                    <div class="form-group">
                        <label class="col-lg-4 col-sm-2 control-label">Designation Short Name</label>
                        <div class="col-lg-8">
                            <input id="DesignationShortName" ng-model="newDesignation.DesignationShortName" type = "text" class="form-control"  placeholder="" >
                        </div>
                    </div>


                    <div class="form-group">
                        <label class="col-lg-4 col-sm-2 control-label">Designation Order</label>
                        <div class="col-lg-8">
                            <input id="DesignationOrder" ng-model="newDesignation.DesignationOrder" type = "text" class="form-control"  placeholder="" >
                        </div>
                    </div>


                        <div class="form-group">
                                    <label class="col-sm-4 control-label">Administrative Department</label>


                                    <div class="col-sm-8">

                                        <select class="form-control" id="DivisionId" data-ng-options="d.DivisionId as d.DivisionName for d in divisions"  data-ng-model="newDesignation.DivisionId">
                                            <option value="">Please select</option>
                                        </select>
                                        <span class="mandatoryFieldMarker">*</span>

                                    </div>
                       </div>



                    <div class="btn-list" style="text-align: right; margin-right: 1.5%">

                            <button id="SaveBtn" type="submit" value="Save" class="btn btn-primary" data-ng-clickkk="save()"><i class="fa fa-check"></i> Save</button>
                            <a class="btn btn-danger" data-ng-click="cancel()"><i class="fa fa-trash-o"></i> Cancel</a>

                    </div>
</form>
  

Как вы можете видеть, я использовал здесь много директив AngularJS, потому что в конечном итоге я хочу выполнить отправку AJAX.

В моем контроллере AngularJS у меня есть этот код

 jQuery(document).ready(function() {


    jQuery("#SaveBtn").click(function (e) {

        e.preventDefault();

        alert(456);

        jQuery("#PageForm").validate({
            rules: {
                DesignationName: {
                    required: true,
                    minlength: 5,
                    maxlength: 200
                },
                DesignationShortName: {
                    minlength: 1,
                    maxlength: 50
                },
                DesignationOrder: {
                    required: true,
                    digits: true,
                    min: 1,
                    max: 1000000
                },
                DivisionId: {
                    required: true
                }
            },
            messages: {
                DesignationName: {
                    required: "Please specify designation name",
                    minlength: "Designation name must be between 5 and 200 characters",
                    maxlength: "Designation name must be between 5 and 200 characters"
                },
                DesignationShortName: {
                    minlength: "Designation short name must be between 1 and 50 characters",
                    maxlength: "Designation short name must be between 1 and 50 characters"
                },
                DesignationOrder: {
                    required: "Please specify designation order",
                    digits: true,
                    min: "Designation order must be betwen 1 and 1000000",
                    max: "Designation order must be betwen 1 and 1000000"
                },
                DivisionId: {
                    required: "Please select administrative division"
                }
            },
            submitHandler: function (form) {


                /////////////
            }
        });


    });



});
  

Проблема в том, что когда я отправляю свою форму, я получаю предупреждение 456, но проверка jQuery не запускается, и данные также не сохраняются (т. Е. Обработчик отправки также не запускается)

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

Комментарии:

1. jQuery и Angular — это две совершенно разные платформы JavaScript. Зачем вам использовать плагин проверки jQuery с Angular, когда у Angular есть свой собственный плагин проверки?? И отключили ли вы встроенную ненавязчивую проверку ASP?

Ответ №1:

Вся ваша проблема заключается в попытке использовать click обработчик и предотвращении поведения по умолчанию…

 jQuery(document).ready(function() {

    jQuery("#SaveBtn").click(function (e) {

        e.preventDefault();

        alert(456);

        jQuery("#PageForm").validate({
            ....
  

Плагин jQuery Validate автоматически фиксирует событие нажатия любой type="submit" кнопки, поэтому все, что вам нужно сделать, это инициализировать плагин, а остальное происходит автоматически…

 jQuery(document).ready(function() {

    jQuery("#PageForm").validate({ 
        ...
  

Редактировать:

Кроме того, для этого плагина name атрибут является обязательным для каждого input , и .validate() метод должен использовать его name в rules amp; messages objects .

 jQuery("#PageForm").validate({
    rules: {
        DesignationName: { // <- MUST be the NAME attribute
            ....
  

ДЕМОНСТРАЦИЯ: jsfiddle.net/06q8sxa3 /

Комментарии:

1. если я это сделаю, форма автоматически отправит обратно на сервер

2. @Shuaib, тогда что-то еще не так. Смотрите мою правку… у вас ДОЛЖЕН быть name атрибут для этих входных данных.

3. Я отредактировал свою форму, сохранив атрибуты имени вместе с идентификатором… но результат тот же

4. @Shuaib, тогда что-то не так, что вы нам не показываете. Это ВАШ код, и он работает для меня: jsfiddle.net/06q8sxa3