jquery表单验证插件Opera和Firefox问题?

jquery表单验证插件Opera和Firefox问题?,jquery,jquery-plugins,jquery-validate,cross-browser,Jquery,Jquery Plugins,Jquery Validate,Cross Browser,当我尝试使用jQuery validator插件验证我的表单时,它会在Mozilla Firefox和Opera上写入两次错误文本,并且在我为输入字段写入合适的值时不会删除它们的值(“此字段是必需的”)。为什么它会写“此字段是必需的。”错误消息两次,并且除了IE之外,在浏览器中不起作用 $(document).ready(function() { $("#courseForm").submit(function(event) { //$("#courseF

当我尝试使用jQuery validator插件验证我的表单时,它会在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,它工作得很好,让我们接受我没有输入一些必需的值。它会显示错误消息,如果我写入了塔尔输入字段,它会立即删除该文本,但在其他浏览器上则无法删除。

如果您使用的是jQuery验证插件,那么您完全无法了解该插件的工作原理!查看演示示例了解如何使用它,最简单的设置是:

$(function() {
   $("#myForm").validate();
});
不需要
$(“#myForm”)。提交(…等)
,因为插件会处理这个问题

编辑:
好的,根据你的最新消息,这里是我的评论:
首先,您现在添加到问题中的所有代码都可以进入
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!');
   }
  });
 }
});
通过这种方式,确保表单输入具有接收表单提交的页面所需的正确的
名称
字段(
pageAction、nameOfCourse、duration…等)。所有其他验证(
trim
.etc)都应该在服务器端完成

否则,如果您想继续按照自己的方式进行,那么代码将是:

$("#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!');
   }
  });
 }
});

我也有同样的问题,基本上我的问题与我在实际输入字段上的一些额外JavaScript有关,这些JavaScript阻止用户输入除数字以外的任何内容。。。一旦我把那些东西拿走,一切都开始工作了

希望它能帮助其他可能遇到同样问题的人:)
干杯

请不要使用jQuery进行验证,并假设发送到服务器的所有数据都是有效的。它对于防止愚蠢的客户端请求非常有用,但对于黑客却无能为力。它很容易通过。也有simliar服务器逻辑。或者只是用户服务器逻辑,而不是jQuery验证Hi-ifaour,我知道它处理提交功能,但我在其他验证之后发布数据,并执行$.ajax post。我不会使用提交表单,这就是为什么我会处理提交并阻止默认。还有其他好的验证插件吗?因为我不明白为什么我在Firefox或Opera上为该表单的输入字段输入正确的值后,它不会刷新错误消息并自动删除错误消息。至于你的第二条评论,这个插件是最好的插件之一。对于您的第一条评论,您仍然可以在plug-n范围内执行所有验证!例如,如果你想做更多的验证(不是表单输入!!),那么在你也可以做ajax提交的方法中使用它,选中。如果你解释一下你想做什么并发布更多的代码,这将对我们有更多的帮助!我还应该定义规则和消息部分吗?我没有定义它,而是在Firefox的Opera上使用IE bu。可能会导致错误,有必要吗?不,没有必要,但如果你不打算使用它们,那就认真点。为什么要首先使用插件?!对于这个错误,你可以发布你的html代码吗?我敢肯定页面被破坏了,IE的行为很奇怪!