2010-06-11 2 views
1

У меня возникла проблема со следующей ситуацией.Вызов функции jquery из ascx не работает

У меня есть ascx, который содержит кнопку отправки для критериев поиска, и я пытаюсь вызвать функцию проверки в файле js, который я использовал на протяжении всего сайта (это первый раз, когда я использую его в ASCX).

Теперь я просто попытался это:

<script type="text/javascript" src="js/jquery-1.3.2.js"></script> 
<script type="text/javascript" src="js/jsAdmin_Generic_SystemValidation.js"></script> 
<script type="text/javascript"> 
    $(document).ready(function() { 
     $(".submitBtn").click(function (e) { 
      alert("test"); 
      alert($.Validate()); 
      alert("test 2"); 
     }); 
    }); 
</script> 

Файл на который ссылается правильно, как я уже видел сообщения в Firebug, которые сделаны им.

Это функция:

jQuery.extend({ 
Validate: function() { 
    var requiredElements = $('.required').length; // Get the number of elements with class required 

    $('.required').each(function() { 
     // If value of textbox is empty and have not 
     // yet been validated then validate all required 
     // elements. i.e. 
     if (($(this).val() == "") || ($(this).hasClass("validationError")) || ($(this).hasClass("validationAlert")) || ($(this).hasClass("validationOk") == false)) { 
      validate($(this)); 
     } 
    }); 

    if ($('.validationOk').length == requiredElements) { 
     return true; 
    } else { 
     return false; 
    } 
}, 
// Another extended function, this function 
// is used for pages with the edit-in-place 
// feature implemented. 
validateElement: function (obj) { 
    var elementId = obj.attr("id"); // id of the button clicked. 
    var flag = 0; 

    if (elementId.toLowerCase() == "paymentmethodid") { 
     // Case elementId = paymentMethodId then check all the 
     // elements with css class starting with openStorage 
     var requiredElements = $(document).find("input[class*='openStorage']").length; // Get the number of elements with css class starting with openStorage 

     // Loop through all the elements with css class containing 
     // openStorage abd validate each element. 
     $(document).find("input[class*='openStorage']").each(function() { 
      if (($(this).val() == "") || ($(this).hasClass("validationError")) || ($(this).hasClass("validationAlert"))) { 
       validate($(this)); 
      } 

      if ($(this).hasClass("validationOk")) { 
       flag++; 
      } else if (($(this).hasClass("validationError")) || ($(this).hasClass("validationAlert"))) { 
       flag--; 
      } 
     }); 

     // If all elements are valid return true else return false 
     if (flag == requiredElements) { 
      return true; 
     } else { 
      return false; 
     } 
    } else if (elementId.toLowerCase() == "registeredfortax") { 
     if (($('.TaxRegistrationNumber').val() == "") || ($('.TaxRegistrationNumber').hasClass("validationError")) || ($('.TaxRegistrationNumber').hasClass("validationAlert"))) { 
      validate($('.TaxRegistrationNumber')); 
     } 

     if ($('.TaxRegistrationNumber').hasClass("validationOk")) { 
      return true; 
     } else { 
      return false; 
     } 
    } else { 
     var elementClass = "." + elementId; 

     if (($(elementClass).val() == "") || ($(elementClass).hasClass("validationError")) || ($(elementClass).hasClass("validationAlert")) || ($(elementClass).hasClass("validationOk") == false)) { 
      validate($(elementClass)); 
     } 

     if ($(elementClass).hasClass("validationOk") && ($(elementClass).hasClass("required"))) { 
      return true; 
     } else if ($(elementClass).hasClass("required") == false) { 
      return true; 
     }else { 
      return false; 
     } 
    } 
} 
}); 

Теперь я сначала получал "Validate() не является функцией" в Firebug. Поскольку я тестировал это оповещение, я получаю первое предупреждение, а затем ничего, без ошибок.

Может ли кто-нибудь пролить свет?

Thanks

+1

Не могли бы вы выслать полный код функции Validate(), а также ваш html? Кроме того, когда вы вызываете $ (". SubmitBtn"). Я предполагаю, что это означает, что у вас есть несколько кнопок во всем приложении (кнопка Submit на вашем .ascx является одним из них), которые имеют класс .submitBtn? –

+0

Я добавил код всей проверки. У меня есть много кнопок, которые используют эту проверку, но этот скрипт, который я разместил, находится в ascx, другие кнопки используют центральный Javascript. Я пытался сначала использовать эту кнопку: Но регулярная кнопка html по-прежнему выдает те же проблемы:

+0

Я вижу эту строку: validate ($ (this)) появляется несколько раз, но не имеет связанной функции. Не хватает кода? Можете ли вы установить точку останова в IE и выполнить выполнение в методе расширения? –

ответ

0

Вы используете метод удлинения правильно? ... http://api.jquery.com/jQuery.extend/

+0

Я верю, что знаю. –

+0

Ах да. Был некоторый код вне блока кода. Я отредактировал его так, чтобы он был включен. –

Смежные вопросы