jquery验证的问题

时间:2011-01-11 17:23:32

标签: jquery ajax jquery-validate

我有一个包含6个文本字段的简单表单。 我使用Ajax来保存信息。 当我单击编辑按钮时,jQuery验证器识别出错误但允许提交。 实际上它只适用于最后输入!

我使用class =“number fillone”来检查他们输入的数字,还输入6中的至少一个...

$('#edit_midterm').click(function() {

    $("#edit_midterm_form").validate({
        rules:{
            queiz: {number:true, max:6,
            seminar:{number:true, max:6,
            tamrin:{number:true, max:6,
            midterm:{number:true, max:6},
            tahghigh:{number:true, max:6},
            project:{number:true, max:6}
        },
        require_from_group: [1,".fillone"],
        submitHandler: function() 
        {
            $("#loading_edit").ajaxStart(function(){$(this).show();});
            $("#loading_edit").ajaxStop(function(){$(this).hide();});

            $.ajax({
                type:"POST",
                url:"course/term/ajax_mlist.php",  
                data:($("#edit_midterm_form").serialize()),
                success:function(data){
                if((data.result)=='true')
                    $("#result_edit").html(data.message);
            }, 
            dataType:"json"});
            return false;
        }


    });
});

这是我的表格:

<form name="edit_mid" action="" id="edit_midterm_form" method="post">
        <input type="hidden" name="type" value="edit">
        <input type="hidden" name="operation" value="yes">
        <input type="hidden" name="ic" value="'.$id.'">
        <table class="list" width="100%" border="0" align="center" cellspacing="1" cellpadding="5" dir="rtl">
        <tr>
            <th colspan="2">Edit Form</th>
        </tr>
        <tr>
            <td width="100">Quize</td>
            <td><span class="red_error"><input type="text" name="queiz" id="queiz" max="6" class="number fillone" value="'.$object->queiz_1.'"></span></td>
        </tr>
        <tr>
            <td>Lecture</td>
            <td><span class="red_error"><input type="text" name="seminar" id="seminar" max="6" class="number fillone"  value="'.$object->seminar_3.'"></span></td>
        </tr>
        <tr>
            <td>home Work</td>
            <td><span class="red_error"><input type="text" name="tamrin" id="tamrin" max="6" class="number fillone"  value="'.$object->tamrin_5.'"></span></td>
        </tr>
        <tr>
            <td>Midterm</td>
            <td><span class="red_error"><input type="text" name="midterm" id="midterm" max="6" class="number fillone"  value="'.$object->midterm_2.'"></span></td>
        </tr>
        <tr>
            <td>Search</td>
            <td><span class="red_error"><input type="text" name="tahghigh" id="tahghigh" max="6" class="number fillone"  value="'.$object->tahghigh_4.'"></span></td>
        </tr>
        <tr>
            <td>project</td>
            <td><span class="red_error"><input type="text" name="project" id="project" max="6" class="number fillone"  value="'.$object->project_6.'"></span></td>
        </tr>
        <tr>
            <td></td>
            <td><input type="submit" id="edit_midterm" value="Edit" class="buttom_edit">
            <img src="../template/icon/ajax_loader_1.gif" id="loading_edit">
            <span id="result_edit"></span>
            </td>
        </tr>
      </table></form>

2 个答案:

答案 0 :(得分:1)

不确定你得到了什么错误,但我一眼就能看到一些关闭的curley braces丢失了:

rules:{
                        queiz: {number:true, max:6},
                        seminar:{number:true, max:6},
                        tamrin:{number:true, max:6},
                        midterm:{number:true, max:6},
                        tahghigh:{number:true, max:6},
                        project:{number:true, max:6}
                        },

答案 1 :(得分:0)

实际上这里是rong,在我的代码中它是正确的。 问题是,当我使用此代码进行控制时,至少输入6中的一个,另一个不起作用。

在我的表单中,它只适用于最后一个!

这是代码:

jQuery.validator.addMethod("require_from_group", function(value, element, options) {
    numberRequired = options[0];
    selector = options[1];
    var validOrNot = $(selector, element.form).filter(function() {
         return $(this).val();
      }).length >= numberRequired;

    if(!$(element).data('being_validated')) {
    var fields = $(selector, element.form);
    fields.data('being_validated', true).valid();
    fields.data('being_validated', false);
    }
    return validOrNot;

}, jQuery.format("please enter {0} Of this"));