2009-05-04 7 views
1

Je reçois une erreur 'Objet attendu' pour une raison étrange due à jquery, et cela ne 'soumet pas' le formulaire ou n'entre pas les données dans la base de données.objet attendu - jquery

sans jquery, les données pourraient être saisies dans la base de données. mais maintenant non.

J'ai principalement utilisé jquery pour valider les contrôles asp.net. Roosteronacid, les validations fonctionnent parfaitement bien et la propriété id est également la même. le soumettre n'exécute tout simplement pas le code côté serveur et je n'arrive pas à comprendre quel est le problème.

EDIT:

ce code est jquery:

<script type="text/javascript"> 
     $(document).ready(function() { 
      // add custom validation methods 
      $.validator.addMethod('phone', function(value, el, params) { 
       return this.optional(el) || /^[0-9,+,(), ,]{1,}(,[0-9]+){0,}$/.test(value); 
      }, 'Please enter a valid phone number'); 

      $.validator.addMethod('numbers', function(value, el, params) { 
       return this.optional(el) || /^[0-9]+$/.test(value); 
      }, 'Invalid entry. Only Numeric is allowed.'); 


      $.validator.addMethod('domainurl', function(value, el, params) { 
       return this.optional(el) || /^(http\:\/\/(?:www\.)?[a-zA-Z0-9]+(?:(?:\-|_)[a-zA-Z0-9]+)*(?:\.[a-zA-Z0-9]+(?:(?:\-|_)[a-zA-Z0-9]+)*)*\.[a-zA-Z]{2,4}(?:\/)?)$/.test(value); 
      }, 'Please enter a valid domain url'); 


      $.validator.addMethod('selectone', function(value, element) { 
       return this.optional(element) || (value.indexOf("none") == -1); 
      }, 'Please select an option.'); 



      $("#form1").validate({ 
       debug: true, 
       rules: { 
        txt_name: { 
         required: true, 
         minlength: 2 
        }, 
        txt_cmp: { 
         required: true, 
         minlength: 2 
        }, 
        txt_tel1: { 
         phone: true, 
         required: true, 
         minlength: 3 

        }, 
        txt_tel2: { 
         phone: true, 
         required: false, 
         minlength: 3 

        }, 
        txt_mob: { 
         phone: true, 
         required: false, 
         minlength: 9 

        }, 
        txt_email: { 
         required: true, 
         email: true 
        }, 

        txt_domname: { 
         required: true, 
         domainurl: true 
        }, 

        radiobt_domain: "required", 

        ddl_yremail: { 
         required: true, 
         selectone: true 
        }, 
        ddl_email: { 
         required: true, 
         selectone: true 
        }, 

        txt_space: { 
         required: true, 
         numbers: true 

        }, 
        txt_calfr: { 
         required: true 
        }, 
        txt_calto: { 
         required: true 
        } 


      }, 
      messages: { 
       txt_name: { 
        required: "This field is required", 
        minLength: "Please enter a valid name" 
       }, 
       txt_cmp: { 
        required: "This field is required", 
        minLength: "Please enter a valid commpany name" 
       }, 
       txt_tel1: { 
        required: "This field is required", 
        minLength: "Please enter a valid telephone number" 

       }, 
       txt_tel2: { 
        minLength: "Please enter a valid telephone number" 
       }, 
       txt_mob: { 
        minLength: "Please enter a valid mobile number" 

       }, 
       txt_email: { 
        email: "Please enter a valid email address", 
        required: "This field is required" 
       }, 

       txt_domname: { 
        required: "This field is required" 
       }, 
       radiobt_domain: "Select the Hosting Type" 
      } 

     }); 
    }); 
    </script> 

est là quelque chose de mal avec le code?

il est dit objet prévu à la ligne 559. i vérifié le fichier jquery.validate.js et ceci est le code qu'il montre:

addWrapper: function(toToggle) { 
      if (this.settings.wrapper) 
       toToggle = toToggle.add(toToggle.parents(this.settings.wrapper)); 
      return toToggle; 
     } 

le code jquery affiche toutes les erreurs au bon endroit, mais une fois corrigé, il ne soumet pas les données.

le plugin j'utilise:

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

+2

Pouvons-nous voir du code? Je ne peux pas vous dire ce qui est cassé si nous ne pouvons pas le voir. –

+8

Je déteste quand jQuery ne met pas à jour ma base de données:/ –

+0

sans un fragment de code Je ne peux que deviner qu'avant jQuery vous aviez du code IE-only qui reposait sur un comportement IE cassé que jQuery corrigeait. par exemple. si vous avez essayé de faire $ ('# myFormID'). submit(); sur

...
où le JS précédent était document.all.myFormID.submit(); ou similaire. – scunliffe

Répondre

8

Objet attendu se produit lorsque vous essayez d'accéder à l'objet non défini, non référencé ou par erreur mal orthographié. Découvrez quel objet est attendu. Utilisez firebug Firefox pour déboguer votre javascript ou faire le débogage avec IE sur pour obtenir un objet que le runtime ne peut pas trouver ....

0

Je suppose que l'erreur est dans votre utilisation de la jQuery validation plug- dans. Essayez de valider uniquement un contrôle ASP.NET. Cela rendra l'erreur plus facile à repérer:

$("#form1").validate({ 
    rules: { 
     id_of_control_you_know_exists_in_the_rendered_html: { 
      required: true, 
      minlength: 2 
     } 
    } 
}); 

Une autre possibilité pourrait être que vous utilisez les contrôles ASP.NET dans un contrôle utilisateur. Dans ce cas, la propriété id du contrôle d'entrée HTML rendu est différente de celle que vous avez définie dans votre page .aspx.

0

J'ai eu le même problème mais sur notre serveur de transfert. La comparaison des fichiers a montré qu'ils étaient identiques et que l'hébergement des mêmes fichiers sur des sites différents ne posait aucun problème, il fallait donc que ce soit le site spécifique sur lequel nous installions les fichiers. Le coupable après le dépannage était que nous définissions un paramètre de fichier Footer.html dans les propriétés pour le site Web dans IIS, de sorte que le serveur l'injectait dans le script sur le rendu. Donc casser tout bon code conforme. Nous avons désactivé la propriété footer sur le paramètre IIS - bingo!

0

Je suis également confronté à ce problème. mais dans mon cas, j'étais jquery version prob est là. J'ai mis la dernière version et le travail en grand dans IE.

2

J'ai résolu ce problème en faisant référence au fichier JQuery. Je l'avais dans un sous-répertoire et je n'avais pas le chemin correct.

Questions connexes