web-dev-qa-db-fra.com

$ ("# form1"). validate n'est pas une fonction

<script type="text/javascript">
<!--
$(document).ready(function() { 
      $("#form1").validate({ 
        rules: { 
         budget: {
            required: true,
             minlength:3
        } ,
       duration: {
            required: true,
            digits:true
        }, 
         town: {
            required: true,
             minlength:2

        },

       content: {
            required: true,
            minlength:300 

        }
         }, 
        messages: { 


        } 
          }); 
        });
        -->
</script>

Deux fichiers jQuery sont inclus.

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript" src="../common/jquery.validate.js"></script>

sont inclus. Il n'y a rien de mal avec l'inclusion.

J'ai eu un message d'erreur 

$ ("# form1"). validate n'est pas une fonction Qu'est-ce qui ne va pas?

24
Steven

Placez la balise de script jQuery before la balise de script pour la validation

Je viens de rencontrer cette erreur extrêmement frustrante et y ai perdu une bonne partie de l’heure, faute de réponse pratique en ligne. J'ai confirmé dans Firebug que je réussissais le CDN à la fois pour jQuery et pour la validation.

En fin de compte, cela change ceci:

    <script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.7/jquery.validate.min.js"></script>
    <script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jquery/jquery-1.4.4.min.js"></script>

pour ça:

    <script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jquery/jquery-1.4.4.min.js"></script>
    <script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.7/jquery.validate.min.js"></script>

était tout ce dont j'avais besoin.

31
Jay

J'ai eu le même problème. Il s'est avéré que je chargeais le fichier JavaScript jQuery plusieurs fois sur la page. Cela était dû aux pages incluses (ou JSP, dans mon cas). Une fois que j'ai supprimé la référence en double au fichier jQuery js, cette erreur a disparu.

18
Michael Sobczak

J'ai eu le même problème, et oui j'avais jquery inclus en premier suivi par le script de validation jquery. Je n'avais aucune idée de ce qui n'allait pas. Il s'avère que j'utilisais une URL de validation qui avait été déplacée. J'ai compris cela en procédant comme suit:

  1. Firefox ouvert
  2. Firebug ouvert
  3. Cliquez sur l'onglet NET dans Firebug. Cela vous montrera toutes les ressources qui sont chargées.
  4. Chargez votre page. 
  5. Vérifiez les ressources chargées et voyez si votre jquery & jquery.validate.js est chargé. 

Dans ma situation, une erreur 403 Forbidden s’est produite lors de la tentative d’obtention (http://dev.jquery.com/view/trunk/plugins/validate/jquery.validate.js, utilisée dans l’exemple de http: //. rocketsquared.com/wiki/Plugins/Validation ). 

Il s'avère que ce lien (http://dev.jquery.com/view/trunk/plugins/validate/jquery.validate.js) s'est déplacé vers http://view.jquery.com/trunk/plugins/validate /jquery.validate.js (Firebug m'a dit cela quand j'ai chargé le fichier localement, par opposition à sur mon serveur Web).

REMARQUE: j'ai également essayé d'utiliser le lien CDN de Microsoft, mais cela a échoué lorsque j'ai essayé de charger le fichier javascript dans le navigateur avec l'URL correcte. Un problème étrange se produisait avec le site CDN. 

4
scifisamurai

vous devrez utiliser le dernier http://ajax.Microsoft.com/ajax/jquery.validate/1.5.5/jquery.validate.js conjointement avec l’un des CDN de Microsoft pour obtenir votre fichier de validation.

2
Ibrahim

Avait le même problème; HTML validé et constaté qu'il me manquait un attribut name="email" d'un <input />. Validez toujours le code HTML pour qu'il soit positif votre code HTML est valide. Après l’ajouté, validate() fonctionnait parfaitement.

2
Josh

Vérifiez si vous utilisez un proxy.

J'ai ce problème dans Mozilla Firefox, je pensais qu'il s'agissait d'un problème lié à Firefox lui-même. Plus tard, j'ai découvert que j'utilisais un serveur proxy. Quand j'ai décoché le proxy, tout s'est bien passé.

1
Ahmad Pouramini

Assurez-vous que jQuery utilise la variable $, et non un autre framework javascript.

Vérifiez votre type de document: validez votre code HTML, parfois les navigateurs ne voient pas les choses en mode quirks ou lorsqu'ils rencontrent du code HTML mal formé.

Assurez-vous également que le fichier jquery.validate.js est correct.

Vous pouvez le télécharger ci-dessous:

http://bassistance.de/jquery-plugins/jquery-plugin-validation/

1
CodeJoust

ma solution au problème: in footer add <script src="//cdnjs.cloudflare.com/ajax/libs/jquery-form-validator/2.3.26/jquery.form-validator.min.js"></script>

Le navigateur a probablement d'abord téléchargé le script validade, puis jQuery. Si le script validade est téléchargé avant le chargement de jQuery, vous obtiendrez une erreur. Vous pouvez le voir en utilisant un outil tel que firebug.

Essaye ça:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script>
    function LoadValidade() {
        var a = false;
        try {
            var teste = $('*');
            if(teste == null)
                throw 1;
        } catch (e) { 
            a = true; 
        }

        if (a){ 
            setTimeout(LoadValidade, 300);
            return;
        }

        var validadeScript = document.createElement("script");
        validadeScript.src = "../common/jquery.validate.js";
        $('head')[0].appendChild(validadeScript);
    } 
    setTimeout(LoadValidade, 300);
</script>
1
Vismari

Dans mon cas, j'ai déplacé la partie de validation en dehors de la fonction de préparation de document et cela fonctionne bien pour moi. J'espère que ça marchera pour toi ...

 $(document).ready(function () {
   // paste validate function outside of the document ready function...
});

    $('#form1').validate({

        rules: {
            English_Name: { required: true, minlength: 3 },
            Arabic_Name: { required: true, minlength: 3 },
            latitude: { required: true, min: 16, max: 32, number: true },
            longitude: { required: true, min: 32, max: 52, number: true },
            EmployeeID: { required: true },
            PaymentTypeID: { required: true },
            BusinessTypeID: { required: true },
            SalesTypeID: { required: true },
            OutletLength: { required: true },
            OutletWidth: { required: true },
            CONTACT_PERSON: { required: true },
            MOBILE_NO: { required: true, minlength: 9, maxlength: 13, digits: true },
            TRADE_LIC_DATE: { dateValidation: true },
            CreditLimit: { min: 0, max: 2000000 },
            CreditPeriod: { min: 0, max: 365 },
            EMAIL_ADDRESS: { email: true },
            BusinessClassID: { required: true },
            CustomerClassificationID: { required: true },
            LicenseTypeID: { required: true }
        },
        message: {
            English_Name: {
                required: ''

            },
            ToDate: {
                required: ''

            }




        },
        submitHandler: function (form) { // for demo

            $.ajax({
                type: 'POST',
                url: '/sfa/Verification/SaveDataInDatabase',
                data: $('form').serialize(),
                beforeSend: function () {
                    $('.submitBtn').attr("disabled", "disabled");
                    $('.modal-body').css('opacity', '.5');
                },
                success: function (msg) {


                    $("#form1").trigger('reset');
                    $('.modal').modal('hide');
                    $('.submitBtn').removeAttr("disabled");
                    $('.modal-body').css('opacity', '');
                }
            });
        }
    });
0
Hamza Amin

Peut-être idiot, mais vérifiez que votre script en ligne est APRÈS avoir inclus les balises de script.

0
fredrik

Si vous aviez un lien, je pourrais voir quel est le problème, mais voici quelques questions et points à vérifier:

  • L'ID de votre formulaire s'appelle-t-il "formulaire" dans le code HTML?
  • Vérifiez si des messages sont requis, il y a peut-être un déséquilibre dans les paramètres
  • Vous devez également ajouter les attributs "type =" text/javascript "'où vous obtenez jQuery de Google.

De plus, si vous utilisez le CDN de Google pour obtenir jQuery, vous pouvez également utiliser le CDN de Microsoft pour obtenir votre fichier de validation. Chacune de ces URL fonctionnera:

0
Liam

J'ai eu ce problème, jquery URL était valide, tout semblait bien et la validation fonctionnait toujours. Après une actualisation complète de CTL + F5, l'erreur a disparu dans Chrome.

0
bradley32110