Плагин проверки формы jquery Opera и Firefox Проблема? - PullRequest
0 голосов
/ 29 декабря 2010

Когда я пытаюсь проверить свою форму с помощью подключаемого модуля валидатора jQuery, он дважды пишет текст ошибки в Mozilla Firefox и Opera и не стирает их значение («Это поле обязательно для заполнения»), когда я пишу подходящее значения для полей ввода. Почему написано «Это поле обязательно для заполнения». сообщение об ошибке два раза и не работает в браузере, кроме IE?

$(document).ready(function() {
        $("#courseForm").submit(function(event) {
            //$("#courseForm").validate();
            if($("#courseForm").valid()){
            var nameOfCourse = $.trim($("#course_name").val());
            var codeOfCourse = $.trim($("#course_code").val());
            var duration = $.trim($("#course_hour").val());
            var courseYear = $("#course_year").val();
            if ($("#is_elective").is(':checked')) {
                var elective = 1;
            } else {
                var elective = 0;
            }
            if ($("#is_service").is(':checked')) {
                var service = 1;
            } else {
                var service = 0;
            }
            var typeOfClassroom = $("#clasroom_type").val();
            var groupCount = $("#group_count").val();
            $.ajax({
                type:'POST',
                url: 'defineCourse.action',
                data: { pageAction:"defineCourse" , nameOfCourse: nameOfCourse, codeOfCourse: codeOfCourse, duration: duration, courseYear: courseYear, elective: elective, service: service, typeOfClassroom: typeOfClassroom, groupCount: groupCount },
                success: function(data) {
                    if (data == null || data == '') {
                        alert('Successfull!');
                    } else {
                        alert(data);
                    }
                },
                error: function(data) {
                    alert('Something wrong!');
                }
            });
            }
            event.preventDefault();
        });
    });

Для IE он работает нормально и позволяет признать, что я не ввел некоторые обязательные значения. Он показывает сообщение об ошибке, и если я пишу поля ввода, он сразу удаляет этот текст, но в другом браузере это не может.

Ответы [ 2 ]

1 голос
/ 29 декабря 2010

Если вы используете этот плагин проверки jQuery, то вы совершенно не понимаете, как работает плагин! посмотрите демонстрационные примеры того, как его использовать, простейшая настройка:

$(function() {
   $("#myForm").validate();
});

не нужно $("#myForm").submit(...etc), так как плагин позаботится об этом!

EDIT:
Итак, на основании вашего обновления вот мои комментарии:
Прежде всего, весь код, который вы добавили в свой вопрос теперь, может идти в методе submitHandler.

Во-вторых, вам действительно нужно "подготовить" свои данные перед их отправкой? Вы можете просто использовать плагин доступные методы проверки и поместить pageAction в скрытый ввод, и ваш submitHandler будет выглядеть так:

$("#courseForm").validate({
 rules: { // All the plug-in built-in validation methods fro your form inputs go here (e.g. required...etc)
    // ...
 },
 messages: {
   //  ...
 },
 submitHandler: function(form) {
  $.ajax({
   type:'POST',
   url: 'defineCourse.action',
   data: $(form).serialize(),
   success: function(data) {
    if (data == null || data == '') {
     alert('Successfull!');
    } else {
     alert(data);
    }
   },
   error: function(data) {
    alert('Something wrong!');
   }
  });
 }
});

Таким образом убедитесь, что в полях ввода формы указано правильное поле name, ожидаемое страницей, получающей отправку формы (pageAction, nameOfCourse, duration....etc). И все остальные проверки (trim .. и т. Д.) Должны выполняться на стороне сервера.

ИНОГДА, и если вы хотите продолжать делать это по-своему, тогда код будет:

$("#courseForm").validate({
 rules: { // All the plug-in built-in validation methods fro your form inputs go here (e.g. required...etc)
    // ...
 },
 messages: {
   //  ...
 },
 submitHandler: function(form) {
  var nameOfCourse = $.trim($("#course_name").val());
  var codeOfCourse = $.trim($("#course_code").val());
  var duration = $.trim($("#course_hour").val());
  var courseYear = $("#course_year").val();
  var elective = 0;
  var service = 0;
  if ($("#is_elective").is(':checked')) {
   elective = 1;
  }
  if ($("#is_service").is(':checked')) {
   service = 1;
  }
  var typeOfClassroom = $("#clasroom_type").val();
  var groupCount = $("#group_count").val();
  $.ajax({
   type:'POST',
   url: 'defineCourse.action',
   data: { pageAction:"defineCourse" , nameOfCourse: nameOfCourse, codeOfCourse: codeOfCourse, duration: duration, courseYear: courseYear, elective: elective, service: service, typeOfClassroom: typeOfClassroom, groupCount: groupCount },
   success: function(data) {
    if (data == null || data == '') {
     alert('Successfull!');
    } else {
     alert(data);
    }
   },
   error: function(data) {
    alert('Something wrong!');
   }
  });
 }
});
0 голосов
/ 14 апреля 2015

У меня была та же проблема, в основном моя была связана с каким-то дополнительным JavaScript, который у меня был в реальных полях ввода, который не позволял пользователю вводить что-либо, кроме цифр ... как только я удалил эти, все стало работать ...

Надеюсь, это поможет другим, которые могут столкнуться с той же проблемой :) Ура

...