未捕获的TypeError:无法调用未定义的jquery validate的方法'call'

时间:2013-05-30 23:50:35

标签: jquery jquery-validate

我的表格如下

<div id="new_image" title="Add Image">
    <form id="new_image_form" action="/reg_new_img" method="POST" enctype="multipart/form-data">
        <table width="0" border="0" cellspacing="0" cellpadding="6" class="table100">
<span class="astrix"></span>

            <tr>
                <td class="td30">Description of the Image:</td>
                <td>
                    <input name="desc" type="text" value="" />
                </td>
            </tr>
            <tr>
                <td></td>
                <td>
                    <input id="atag" type="hidden" name="atag" value="">
                    </textarea>
                </td>
            </tr>
            <tr>
                <tr>
                    <td>Files / Image:
                        <p class="text5">X-ray / Site / Document / Agreement etc.</p>
                    </td>
                    <td>
                        <input name="image" type="file">
                    </td>
                </tr>
        </table>
    </form>
</div>

脚本如下。

$(document).ready(function () {

    $("#new_image").dialog({
        height: $("#new_image").height() + 150,
        width: $("#new_image").width() - 450,
        modal: true,
        autoOpen: false,
        show: {
            effect: "fade",
            duration: 200
        },
        hide: {
            effect: "fade",
            duration: 200
        },

        buttons: {
            "Submit": function () {
                $("#new_image_form").submit();
            },
                "Close": function () {
                $('#new_image').dialog("close");
            }
        }
    });

    $('#new_image_form').validate({
        rules: {
            desc: {
                required: true,
                minlength: 10
            },
            image: {
                required: true,
                accept: "image/*"
            }
        },
        messages: {
            image: {
                required: "only Image files accepted",
                accept: "Please upload only image",
            },
        },
        submitHandler: function (form) {
            $('#new_image_form').ajaxSubmit({
                success: function (data) {
                    console.log(data);
                    $('#new_image').dialog("close");
                    $(':input', '#new_image_form')
                        .not(':button, :submit, :reset, :hidden')
                        .val('')
                        .removeAttr('checked')
                        .removeAttr('selected');
                }
            });
            parse_patients();
        }
    });
    $('#new_image').dialog("open");
});

我在js小提琴上有这段代码

http://jsfiddle.net/rakeshpatil1983/ctL7q/

当我实际将图像文件放在Chrome浏览器控制台上时单击“提交”时出现错误

未捕获的TypeError:无法调用未定义的方法'call'

我无法解决这个问题。此代码似乎适用于其他一些页面。

2 个答案:

答案 0 :(得分:11)

在#new_image_form的规则中,“accept”不是默认的jQuery Validator默认规则。您必须使用以下默认规则之一:Jquery Validate - List of Classes或定义您自己的自定义规则,例如:jQuery Validate Plugin - How to create a simple custom rule?

编辑:来自下面的评论:有一个名为accept的规则是jQuery Validate插件包的一部分。您只需要包含additional-methods文件即可使用它。

答案 1 :(得分:-1)

//Add New Validator Rule
jQuery.validator.addMethod("accept", function(value, element, param)
{
    return value.match(new RegExp("^" + param + "$"));
});

我有类似的问题,“接受”规则在开始时就忘记了。

然后'Uncaught TypeError:无法调用'undefined'方法'call'消失了。

相关问题