2010-12-08 6 views
0

Je reçois une erreur dans la console d'erreur firefox "Erreur: submitSearchForm n'est pas défini"Firefox javascript fonction d'erreur "undefined" fonctionne très bien dans IE

ceci est mon code pour cette fonction

EDIT: ajouté code complet

function submitSearchForm(action,iskeyDown) { 

       var oneEntered = false; 

        if(iskeyDown == null || iskeyDown == 'undefined'){ 
         copyAndValidate("dobFrom", "searchCriteria.dob", "date"); 
         copyAndValidate("dobTo", "searchCriteria.dobTo", "date"); 
         copyAndValidate("dodFrom", "searchCriteria.dodFrom", "date"); 
         copyAndValidate("dodTo", "searchCriteria.dodTo", "date"); 
         copyAndValidate("searchCriteria.age", "searchCriteria.age", "integer"); 
        }else{ 
         copyAndValidate("dobFrom_date", "searchCriteria.dob", "date"); 
         copyAndValidate("dobTo_date", "searchCriteria.dobTo", "date"); 
         copyAndValidate("dodFrom_date", "searchCriteria.dodFrom", "date"); 
         copyAndValidate("dodTo_date", "searchCriteria.dodTo", "date"); 
         copyAndValidate("searchCriteria.age", "searchCriteria.age", "integer"); 
        } 



        var elements = document.SearchForm.getElementsByTagName("INPUT"); 
        for (var i = 0; i < elements.length; i++) { 
         var element = elements[i]; 
         if (element != null && element.getAttribute("group") == 'searchCriteria') { 
          if (!isEmpty(element.value)) { 
           oneEntered = true; 
           break; 
          } 
         } 
        } 

       if (oneEntered) 

        { 

         if (validate(document.SearchForm)) { 

            document.SearchForm.action.value = action; 
             document.SearchForm.submit(); 
           } 

       } 


       else { 
        alert("<%= bpt.getValue("CCT_ATLEASTONE_MSG") %>"); 
       } 


      } 

bouton

onclick="<%="submitSearchForm('"+SearchForm.ACTION_SEARCH +"');"%>" 

juste pour dire encore une fois que tout fonctionne bien dans IE de sorte que le code est correct

EDIT: validate VALIDATION.JS()

function validate(thisForm) { 

    window.event.returnValue = false; 
    formToValidate = thisForm; 
    var ret = true; 
    var validationErrors = new Array(); 

    // get the validateable items 
    // var validateThese = getValidationItems(thisForm.childNodes); 
    var validateThese = getValidationItems(thisForm); 
    //printValidationArray(validateThese); 

    // validate them 
    for (var i = 0; i < validateThese.length; i++) { 
    var validationItem = validateThese[i]; 
    var validationError = validateMe(validationItem); 
    if (validationError != "") { 
     validationErrors[validationErrors.length] = validationError; 
    } 
    } 

    // check for validation errors 
    if (validationErrors.length > 0) { 
    var errors = ""; 
    for (var j = 0; j < validationErrors.length; j++) { 
     errors += validationErrors[j] + "\n"; 
    } 
    alert("Validation Errors:\n" + errors); 
    ret = false; 
    } else { 
    ret = true; 
    } 
    return ret; 
} 
+0

Est-ce le code complet? Où window.event est-il utilisé par le code? – David

+0

J'ai enlevé le bit à propos de window.event parce que ce n'était pas le point de ma question. je demande à propos de submititsearchform. – code511788465541441

+0

@user: d'accord. Quelle partie de JavaScript provoque l'erreur _ "submitSearchForm n'est pas définie" _? En outre, pourquoi l'ensemble supplémentaire d'accolades autour de votre déclaration 'if (...)'? C'est syntaxiquement invalide. –

Répondre

1

window.event (als o référencé simplement event) n'est pas un objet global standard en JavaScript. C'est une "fonctionnalité" IE seulement.

Voir this question.


Essayez de changer la déclaration de fonction:

function submitSearchForm(action, iskeyDown) { 
    // ... 
    // { <------------------------------------------------ brace removed 
     if (validate(document.SearchForm)) { 
      document.SearchForm.action.value = action; 
      document.SearchForm.submit(); 
     } 
    // } <----------------------------------------------- brace removed 
} 

en JavaScript Accolades ne fonctionnent pas de la même manière que dans, disons, Java. Selon l'endroit où ils sont placés, ils signifient des choses différentes. Exemple: this question.

Je suppose que l'erreur de syntaxe dans la déclaration de la fonction submitSearchForm est la source de votre problème.


Je ne suis toujours pas sûr que le code que vous avez posté est en fait le code du navigateur voit, mais si oui, essayez ceci:

function submitSearchForm(action, iskeyDown) { 
    var oneEntered = false; 

    if (iskeyDown === null || typeof iskeyDown === 'undefined') { 
     copyAndValidate("dobFrom", "searchCriteria.dob", "date"); 
     copyAndValidate("dobTo", "searchCriteria.dobTo", "date"); 
     copyAndValidate("dodFrom", "searchCriteria.dodFrom", "date"); 
     copyAndValidate("dodTo", "searchCriteria.dodTo", "date"); 
     copyAndValidate("searchCriteria.age", "searchCriteria.age", "integer"); 
    } else { 
     copyAndValidate("dobFrom_date", "searchCriteria.dob", "date"); 
     copyAndValidate("dobTo_date", "searchCriteria.dobTo", "date"); 
     copyAndValidate("dodFrom_date", "searchCriteria.dodFrom", "date"); 
     copyAndValidate("dodTo_date", "searchCriteria.dodTo", "date"); 
     copyAndValidate("searchCriteria.age", "searchCriteria.age", "integer"); 
    } 

    var elements = document.SearchForm.getElementsByTagName("INPUT"); 
    for (var i = 0; i < elements.length; i++) { 
     var element = elements[i]; 
     if (element !== null && element.getAttribute("group") === 'searchCriteria') { 
      if (!isEmpty(element.value)) { 
       oneEntered = true; 
       break; 
      } 
     } 
    } 

    if (oneEntered) 
    { 
     if (validate(document.SearchForm)) { 

      document.SearchForm.action.value = action; 
      document.SearchForm.submit(); 
     } 
    } 

    else { 
     alert('<%= bpt.getValue("CCT_ATLEASTONE_MSG") %>'); 
    } 
} 
+0

Cela n'a pas fonctionné. qu'avez-vous changé autre que l'alerte? – code511788465541441

+0

@user: pas grand chose. J'ai changé votre '' == null' à '=== null', et de même'! = Null' à '! == null'. –

+0

Vous aviez raison, c'était la déclaration window.event dans le fichier .js qui était le problème. Même quand je l'ai mis à false il n'était toujours pas reconnu par firefox et a causé tous les problèmes.Maintenant, j'ai complètement supprimé window.event.returnValue = false; et cela fonctionne. merci – code511788465541441

1

window.event est jeter un oeil IE de spécifique, ici (un peu vieux) table pour les différents navigateurs:

est ici la documentation officielle:

Voici un autre poste pour que:

+0

Je ne sais pas pourquoi mais cette erreur est à l'écart maintenant j'ajoute ce peu. le problème est ... pourquoi dit-on que la fonction est indéfinie si elle est là. si c'est ce que cela signifie par indéfini? que ça n'existe pas? – code511788465541441

+0

Vous pourriez rencontrer des problèmes de syntaxe, par exemple. si vous écrivez: 'function abc() {{{{}', cela va être une erreur de syntaxe, quelle que soit la fonction 'abc'" étant là ". Vérifiez que vos '{' et '}' (et autres choses) correspondent. Pour commencer, écrivez simplement: 'function submitSearchForm (action, iskeyDown) {alert ('hello'); } ' –

+1

S'il y a une erreur dans le code de la définition de la fonction, la fonction n'a pas été définie (car une erreur se produit lorsque le navigateur l'analyse). C'est pourquoi nous demandons le code complet pour la fonction. – David

0

J'ai eu erreur semblable juste résolu le même. L'étiquette de formulaire doit être sous <html><body>. par exemple.Si vous venez d'utiliser <form></form> tag et en essayant de soumettre alors il donne une erreur dans l'ancienne version de mozill alors qu'il fonctionne dans la nouvelle version et d'autres navigateurs.

+0

Arrêté la publication de la réponse en double, au lieu de poster une seule réponse et de fournir un lien ici pour la référence. –

+1

Désolé, je vais m'en occuper la prochaine fois .. – Krishna

Questions connexes