Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Uncaught TypeError: Cannot call method 'call' of undefined jquery validate

I have my form as below

<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>

the script is as below.

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

I have this code on js fiddle

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

I'm getting an error when i click submit when I actually put image file on the chrome browser console

Uncaught TypeError: Cannot call method 'call' of undefined

I'm not able to fix this. This code seems to work in some other page.

like image 200
rakesh Avatar asked May 15 '26 19:05

rakesh


1 Answers

In your rules for #new_image_form, "accept" is not a default jQuery Validator default rule. You must either use one of these default rules: Jquery Validate - List of Classes or define your own custom rule like such: jQuery Validate Plugin - How to create a simple custom rule?

EDIT: from comments below: there is a rule called accept that is part of the jQuery Validate plugin package. You simply have to include the additional-methods file in order to use it.

like image 61
755 Avatar answered May 17 '26 09:05

755



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!