Uncaught TypeError: Object # <Object> nie ma metody „validate”

Otrzymuję tytułowy błąd, gdy próbuję zadzwonić dovalidate() funkcja na moim formularzu. Wszystkie badania, które zrobiłem, mówią „upewnij się, że dzwonisz”, ale jestem w 95% pewien, że tak właśnie jest:

<script type="text/javascript" src="http://test.elitetradersgroup.com.au/wp-content/plugins/a-test/jquery.validate.min.js?ver=3.3.2"></script>
<script type="text/javascript" src="http://test.elitetradersgroup.com.au/wp-content/plugins/a-test/additional-methods.min.js?ver=3.3.2"></script>

Kiedy klikam na nich w narzędziach Chromes dev, wymyślają pliki wtyczek, co prowadzi mnie do przekonania, że ​​są one dołączone. Są wywoływane po jQuery, więc wątpię, żeby tak było.

Formularz wygląda następująco:

<form action="http://test.elitetradersgroup.com.au/broker-tools/amazon-upload/" method="post" class="upload" enctype="multipart/form-data">
    <label class="title hide" for="theTitle">Email Title</label>
    <input id="theTitle" class="hide" type="text" name="theTitle"><div id="amazon_title_char_count" class="hide"></div><div id="excess_warning" style="display:none; font-weight: bold;color: red;"></div>

    <label class="title hide" for="theSite">Select Email From</label>

        <div class="option hide"><span class="sec_name">Elite Traders Group</span><div class="opt-cont"><input class="radio broadcast" type="radio" id="sec_2" name="theSite" value="s_2"><label class="radio" for="sec_2">Broadcast</label></div></div><div class="option hide"><span class="sec_name">Elite Futures Mastery</span><div class="opt-cont"><input class="radio broadcast" type="radio" id="sec_6" name="theSite" value="s_6"><label class="radio" for="sec_6">Broadcast</label></div><div class="opt-cont"><input class="radio daily-forex-room" type="radio" id="sec_10" name="theSite" value="s_10"><label class="radio" for="sec_10">Daily Forex Room</label></div><div class="opt-cont"><input class="radio day-ahead" type="radio" id="sec_3" name="theSite" value="s_3"><label class="radio" for="sec_3">Day Ahead</label></div><div class="opt-cont"><input class="radio the-daily-beef" type="radio" id="sec_9" name="theSite" value="s_9"><label class="radio" for="sec_9">The Daily Beef</label></div><div class="opt-cont"><input class="radio trade-progress" type="radio" id="sec_5" name="theSite" value="s_5"><label class="radio" for="sec_5">Trade Progress</label></div><div class="opt-cont"><input class="radio trade-recommendation" type="radio" id="sec_11" name="theSite" value="s_11"><label class="radio" for="sec_11">Trade Recommendation</label></div><div class="opt-cont"><input class="radio week-ahead" type="radio" id="sec_4" name="theSite" value="s_4"><label class="radio" for="sec_4">Week Ahead</label></div></div><div class="option hide"><span class="sec_name">Daily Wealth Report</span><div class="opt-cont"><input class="radio technical-toolbox" type="radio" id="sec_1" name="theSite" value="s_1"><label class="radio" for="sec_1">Technical Toolbox</label></div></div><div class="option hide"><span class="sec_name">Elite Options Mastery</span><div class="opt-cont"><input class="radio broadcast" type="radio" id="sec_7" name="theSite" value="s_7"><label class="radio" for="sec_7">Broadcast</label></div></div><div class="option hide"><span class="sec_name">Options Made Easy</span><div class="opt-cont"><input class="radio broadcast" type="radio" id="sec_8" name="theSite" value="s_8"><label class="radio" for="sec_8">Broadcast</label></div></div>    

<label class="title hide">Files to include</label>
<div id="container">
    <div id="filelist"></div>
    <div id="queue-time"></div>
    <br>
    <a id="pickfiles" class="hide" href="#">[Select files]</a>

</div>

    <label class="title hide">Extras</label>

    <input type="checkbox" class="hide" id="positons" name="positions" value="positions-box"><label class="hide" for="positons">Include Positions</label>
    <input type="checkbox" class="hide" id="message" name="message" value="message-box"><label class="hide" for="message">Include message</label>
    <input type="checkbox" class="hide" id="additional-webinar" name="additional-webinar" value="additional-webinar-box"><label class="hide" for="additional-webinar">Include Additional Webinar</label>

    <div class="hide" id="positions-box" style="display:none;">
        <label class="title">Positions Info</label>
        <label>New/Potential Trades</label>
        <input type="text" name="np-trades">
        <label>Current Trades</label>
        <input type="text" name="cur-trades">
        <label>Updates</label>
        <input type="text" name="update-trades">
    </div>
    <div class="hide" id="message-box" style="display:none;">
        <label class="title">Email Message</label>
        <textarea id="message-ta" name="message" cols="50" rows="10"></textarea>
        <div id="message_char_count"></div>
        <div id="message_excess_warning" style="display:none; font-weight: bold;color: red;"></div>
    </div>
    <div class="hide" id="additional-webinar-box" style="display:none;">
        <label class="title">Select Additional Webinar</label>
        <select name="additional-webinar-selection">
            <option value="0" selected="">Please Select</option>
            <option value="173">Del All test(Elite Options Mastery)</option><option value="171">Glob Test(Elite Futures Mastery)</option><option value="169">Test 2(Elite Futures Mastery)</option><option value="167">Test(Elite Futures Mastery)</option><option value="164">Test(Elite Futures Mastery)</option><option value="162">New Min TEst(Elite Futures Mastery)</option><option value="160">Min Height Test(Elite Options Mastery)</option><option value="158">Title Yo(Elite Options Mastery)</option><option value="156">Title(Options Made Easy)</option><option value="96">TT Test(Daily Wealth Report)</option>        </select>
    </div>

    <input type="hidden" value="elitetradersgroup" name="amazon_bucket">
    <button class="hide" id="validate" type="button" onclick="broker_validate()">Validate</button>
    <button class="hide" id="juploader" type="button" style="display:none">Upload</button>
<input type="hidden" name="uid" value="p16ubcu16t1gus18ls12g79ls1"></form>

I takie połączenie:

<script type="text/javascript">
    function broker_validate() {
        jQuery("form").validate({ //line where the error pops up in console
            rules: {
                theTitle: {
                    required: true
                },
            messages: {
                theTitle: {
                    required: "The email needs a title"
                }
            }
            }
        })

        if (jQuery("form").valid()) {
            jQuery("#validate").hide();
            jQuery("#juploader").show();
        }

    };

</script>

Ta rzecz mnie zakłopotała, jestem pewien, że to głupia mała składnia lub błąd priorytetu. Czy ktoś, kto ma świeże oczy, może to zauważyć?

FYI strona działa na wordpress, ponieważ możesz być w stanie rozpoznać po jQuery, który jest pobierany z pliku wtyczek.

W odpowiedzi na komentarz znajduje się wyjście konsoli Chromeconsole.log(jQuery("form"));:

E.fn.E.init
    0: HTMLFormElement
    length: 1
    prevObject: E.fn.E.init
    __proto__: Object

questionAnswers(2)

yourAnswerToTheQuestion