Firefox функция ошибки JavaScript "undefined" отлично работает в IE - PullRequest
0 голосов
/ 08 декабря 2010

Я получаю сообщение об ошибке в консоли ошибок Firefox «Ошибка: submitSearchForm не определен»

Это мой код для этой функции

РЕДАКТИРОВАТЬ: добавлено полноекод

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


            }

кнопка

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

повторюсь, в IE все отлично работает, поэтому код правильный

РЕДАКТИРОВАТЬ: VALIDATION.JS validate ()

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

Ответы [ 3 ]

1 голос
/ 08 декабря 2010

window.event (также именуемый просто event) не является стандартным глобальным объектом в JavaScript. Это «функция» только для IE.

См. этот вопрос .


Попробуйте изменить объявление функции на:

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

Брекеты в JavaScript не работают так же, как, скажем, в Java. В зависимости от того, где они находятся, они означают разные вещи. Пример: этот вопрос .

Я предполагаю, что синтаксическая ошибка в объявлении функции submitSearchForm является источником вашей проблемы.


Я все еще не уверен, что код, который вы разместили, на самом деле является кодом, который видит браузер, но если это так, попробуйте это:

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") %>');
    }
}
1 голос
/ 08 декабря 2010

window.event специфичен для IE, посмотрите здесь (немного устаревшую) таблицу для разных браузеров:

Вот официальная документация:

Вот еще один пост для этого:

0 голосов
/ 24 февраля 2014

У меня была похожая ошибка, только что устраненная.
Тег формы должен находиться под тегом <html><body>. например <html><body><form></form></body></html>

Если вы только что использовали тег <form></form> и пытаетесь отправить его, тогда он выдает ошибку в более старой версии mozill, пока он работает в более новой версии и других браузерах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...